    public static ArrayList<Integer> getInedexesWithMaxRating(MCTNode node,
            int whiteRankingMethod, int blackRankingMethod)
            throws MCTUtilsException {
        ArrayList<Integer> rez = new ArrayList<Integer>();
        if (node.nextMoves == null) { throw new MCTUtilsException(
                "node nima razvitih naslednikov"); }
        if (node.nextMoves.size() == 0) { return rez; }
        double maxRating = Double.MIN_VALUE;
        double currRating = Double.MIN_VALUE;
        for (int x = 0; x < node.nextMoves.size(); x++) {
            if (node.isWhitesMove) {
                currRating = MCTUtils.computeNodeRating(node.nextMoves.get(x),
                        whiteRankingMethod);
            }
            else {
                currRating = MCTUtils.computeNodeRating(node.nextMoves.get(x),
                        blackRankingMethod);
            }
            if (currRating > maxRating) {
                maxRating = currRating;
                rez = new ArrayList<Integer>();
            }
            if (currRating == maxRating) {
                rez.add(x);
            }
        }
        if (Constants.SELECTION_ALSO_USES_VISIT_COUNT_FOR_NODE_CHOOSING) {
            int maxVisitCount = Integer.MIN_VALUE;
            ArrayList<Integer> filteredRez = new ArrayList<Integer>();
            for (Integer x : rez) {
                MCTNode currNode = node.nextMoves.get(x);
                if (currNode.visitCount > maxVisitCount) {
                    maxVisitCount = currNode.visitCount;
                    filteredRez = new ArrayList<Integer>();
                }
                if (currNode.visitCount == maxVisitCount) {
                    filteredRez.add(x);
                }
            }
            return filteredRez;
        }
        return rez;
    }

    public static ArrayList<Integer> getInedexesWithMaxRating(MCTNode node,
            int whiteRankingMethod, int blackRankingMethod)
            throws MCTUtilsException {
        ArrayList<Integer> rez = new ArrayList<Integer>();
        if (node.nextMoves == null) { throw new MCTUtilsException(
                "node nima razvitih naslednikov"); }
        if (node.nextMoves.size() == 0) { return rez; }
        double maxRating = -Double.MAX_VALUE;
        double currRating = -Double.MAX_VALUE;
        for (int x = 0; x < node.nextMoves.size(); x++) {
            if (node.isWhitesMove) {
                currRating = MCTUtils.computeNodeRating(node.nextMoves.get(x),
                        whiteRankingMethod);
            }
            else {
                currRating = MCTUtils.computeNodeRating(node.nextMoves.get(x),
                        blackRankingMethod);
            }
            if (currRating > maxRating) {
                maxRating = currRating;
                rez = new ArrayList<Integer>();
            }
            if (currRating == maxRating) {
                rez.add(x);
            }
        }
        if (Constants.SELECTION_ALSO_USES_VISIT_COUNT_FOR_NODE_CHOOSING) {
            int maxVisitCount = Integer.MIN_VALUE;
            ArrayList<Integer> filteredRez = new ArrayList<Integer>();
            for (Integer x : rez) {
                MCTNode currNode = node.nextMoves.get(x);
                if (currNode.visitCount > maxVisitCount) {
                    maxVisitCount = currNode.visitCount;
                    filteredRez = new ArrayList<Integer>();
                }
                if (currNode.visitCount == maxVisitCount) {
                    filteredRez.add(x);
                }
            }
            return filteredRez;
        }
        return rez;
    }
