org_eclipse_lemminx_services_XMLFoldingsTest_java
org.eclipse.lemminx.services.XMLFoldings
private static List<FoldingRange> limitRanges(List<FoldingRange> ranges, int rangeLimit) {
        Collections.sort(ranges, (r1, r2) -> {
            int diff = r1.getStartLine() - r2.getStartLine();
            if (diff == 0) {
                diff = r1.getEndLine() - r2.getEndLine();
            }
            return diff;
        });
        FoldingRange top = null;
        ArrayList<FoldingRange> previous = new ArrayList<FoldingRange>();
        HashMap<Integer, Integer> nestingLevels = new HashMap<Integer, Integer>();
        LinkedHashMap<Integer, Integer> nestingLevelCounts = new LinkedHashMap<Integer, Integer>();
        for (int i = 0; i < ranges.size(); ++i) {
            FoldingRange entry = ranges.get(i);
            if (top == null) {
                top = entry;
                XMLFoldings.setNestingLevel(i, 0, nestingLevels, nestingLevelCounts);
                continue;
            }
            if (entry.getStartLine() <= top.getStartLine()) continue;
            if (entry.getEndLine() <= top.getEndLine()) {
                previous.add(top);
                top = entry;
                XMLFoldings.setNestingLevel(i, previous.size(), nestingLevels, nestingLevelCounts);
                continue;
            }
            if (entry.getStartLine() <= top.getEndLine()) continue;
            while ((top = (FoldingRange)previous.remove(previous.size() - 1)) != null && entry.getStartLine() > top.getEndLine()) {
            }
            if (top != null) {
                previous.add(top);
            }
            top = entry;
            XMLFoldings.setNestingLevel(i, previous.size(), nestingLevels, nestingLevelCounts);
        }
        int entries = 0;
        int maxLevel = 0;
        for (Map.Entry entry : nestingLevelCounts.entrySet()) {
            Integer n = (Integer)entry.getValue();
            if (n + entries > rangeLimit) {
                maxLevel = (Integer)entry.getKey();
                break;
            }
            entries += n.intValue();
        }
        ArrayList<FoldingRange> result = new ArrayList<FoldingRange>();
        for (int i = 0; i < ranges.size(); ++i) {
            Integer level = (Integer)nestingLevels.get(i);
            if (level == null || level >= maxLevel && (level != maxLevel || entries++ >= rangeLimit)) continue;
            result.add(ranges.get(i));
        }
        return result;
    }
 -> java.util.Collections.sort(java.util.List,java.util.Comparator): void -> java.util.List.size(): int -> java.util.List.get(int): java.lang.Object -> java.lang.Integer.valueOf(int): java.lang.Integer -> java.lang.Integer.valueOf(int): java.lang.Integer -> java.util.Map.put(java.lang.Object,java.lang.Object): java.lang.Object -> java.lang.Integer.valueOf(int): java.lang.Integer -> java.lang.Integer.valueOf(int): java.lang.Integer -> java.util.Map.containsKey(java.lang.Object): boolean -> java.lang.Integer.valueOf(int): java.lang.Integer -> java.util.Map.put(java.lang.Object,java.lang.Object): java.lang.Object -> java.util.List.size(): int -> java.util.List.get(int): java.lang.Object -> java.util.List.add(java.lang.Object): boolean -> java.util.List.size(): int -> java.lang.Integer.valueOf(int): java.lang.Integer -> java.lang.Integer.valueOf(int): java.lang.Integer -> java.util.Map.put(java.lang.Object,java.lang.Object): java.lang.Object -> java.lang.Integer.valueOf(int): java.lang.Integer -> java.lang.Integer.valueOf(int): java.lang.Integer -> java.util.Map.containsKey(java.lang.Object): boolean -> java.lang.Integer.valueOf(int): java.lang.Integer -> java.util.Map.put(java.lang.Object,java.lang.Object): java.lang.Object -> java.util.List.size(): int -> java.util.List.get(int): java.lang.Object -> java.util.List.add(java.lang.Object): boolean -> java.util.List.size(): int -> java.lang.Integer.valueOf(int): java.lang.Integer -> java.lang.Integer.valueOf(int): java.lang.Integer -> java.util.Map.put(java.lang.Object,java.lang.Object): java.lang.Object -> java.lang.Integer.valueOf(int): java.lang.Integer -> java.lang.Integer.valueOf(int): java.lang.Integer -> java.util.Map.containsKey(java.lang.Object): boolean -> java.lang.Integer.valueOf(int): java.lang.Integer -> java.util.Map.put(java.lang.Object,java.lang.Object): java.lang.Object -> java.util.List.size(): int -> java.util.List.get(int): java.lang.Object -> java.util.List.size(): int -> java.util.List.remove(int): java.lang.Object -> java.util.List.add(java.lang.Object): boolean -> java.util.List.size(): int -> java.lang.Integer.valueOf(int): java.lang.Integer -> java.lang.Integer.valueOf(int): java.lang.Integer -> java.util.Map.put(java.lang.Object,java.lang.Object): java.lang.Object -> java.lang.Integer.valueOf(int): java.lang.Integer -> java.lang.Integer.valueOf(int): java.lang.Integer -> java.util.Map.containsKey(java.lang.Object): boolean -> java.lang.Integer.valueOf(int): java.lang.Integer -> java.util.Map.get(java.lang.Object): java.lang.Object -> java.lang.Integer.intValue(): int -> java.lang.Integer.valueOf(int): java.lang.Integer -> java.util.Map.put(java.lang.Object,java.lang.Object): java.lang.Object -> java.util.List.size(): int -> java.util.List.get(int): java.lang.Object -> java.util.List.add(java.lang.Object): boolean -> java.util.List.size(): int -> java.lang.Integer.valueOf(int): java.lang.Integer -> java.lang.Integer.valueOf(int): java.lang.Integer -> java.util.Map.put(java.lang.Object,java.lang.Object): java.lang.Object -> java.lang.Integer.valueOf(int): java.lang.Integer -> java.lang.Integer.valueOf(int): java.lang.Integer -> java.util.Map.containsKey(java.lang.Object): boolean -> java.lang.Integer.valueOf(int): java.lang.Integer -> java.util.Map.put(java.lang.Object,java.lang.Object): java.lang.Object -> java.util.List.size(): int -> java.util.List.get(int): java.lang.Object -> java.util.List.size(): int -> java.util.List.remove(int): java.lang.Object -> java.util.List.add(java.lang.Object): boolean -> java.util.List.size(): int -> java.lang.Integer.valueOf(int): java.lang.Integer -> java.lang.Integer.valueOf(int): java.lang.Integer -> java.util.Map.put(java.lang.Object,java.lang.Object): java.lang.Object -> java.lang.Integer.valueOf(int): java.lang.Integer -> java.lang.Integer.valueOf(int): java.lang.Integer -> java.util.Map.containsKey(java.lang.Object): boolean -> java.lang.Integer.valueOf(int): java.lang.Integer -> java.util.Map.get(java.lang.Object): java.lang.Object -> java.lang.Integer.intValue(): int -> java.lang.Integer.valueOf(int): java.lang.Integer -> java.util.Map.put(java.lang.Object,java.lang.Object): java.lang.Object -> java.util.List.size(): int -> java.util.List.get(int): java.lang.Object -> java.util.List.size(): int -> java.util.List.remove(int): java.lang.Object -> java.util.List.size(): int -> java.util.List.remove(int): java.lang.Object -> java.util.List.add(java.lang.Object): boolean -> java.util.List.size(): int -> java.lang.Integer.valueOf(int): java.lang.Integer -> java.lang.Integer.valueOf(int): java.lang.Integer -> java.util.Map.put(java.lang.Object,java.lang.Object): java.lang.Object -> java.lang.Integer.valueOf(int): java.lang.Integer -> java.lang.Integer.valueOf(int): java.lang.Integer -> java.util.Map.containsKey(java.lang.Object): boolean -> java.lang.Integer.valueOf(int): java.lang.Integer -> java.util.Map.get(java.lang.Object): java.lang.Object -> java.lang.Integer.intValue(): int -> java.lang.Integer.valueOf(int): java.lang.Integer -> java.util.Map.put(java.lang.Object,java.lang.Object): java.lang.Object -> java.util.List.size(): int -> java.util.List.get(int): java.lang.Object -> java.util.List.size(): int -> java.util.List.remove(int): java.lang.Object -> java.util.List.add(java.lang.Object): boolean -> java.util.List.size(): int -> java.lang.Integer.valueOf(int): java.lang.Integer -> java.lang.Integer.valueOf(int): java.lang.Integer -> java.util.Map.put(java.lang.Object,java.lang.Object): java.lang.Object -> java.lang.Integer.valueOf(int): java.lang.Integer -> java.lang.Integer.valueOf(int): java.lang.Integer -> java.util.Map.containsKey(java.lang.Object): boolean -> java.lang.Integer.valueOf(int): java.lang.Integer -> java.util.Map.get(java.lang.Object): java.lang.Object -> java.lang.Integer.intValue(): int -> java.lang.Integer.valueOf(int): java.lang.Integer -> java.util.Map.put(java.lang.Object,java.lang.Object): java.lang.Object -> java.util.List.size(): int -> java.util.Map.entrySet(): java.util.Set -> java.util.Set.iterator(): java.util.Iterator -> java.util.Iterator.hasNext(): boolean -> java.util.Iterator.next(): java.lang.Object -> java.util.Map$Entry.getValue(): java.lang.Object -> java.lang.Integer.intValue(): int -> java.lang.Integer.intValue(): int -> java.util.Iterator.hasNext(): boolean -> java.util.Iterator.next(): java.lang.Object -> java.util.Map$Entry.getValue(): java.lang.Object -> java.lang.Integer.intValue(): int -> java.lang.Integer.intValue(): int -> java.util.Iterator.hasNext(): boolean -> java.util.Iterator.next(): java.lang.Object -> java.util.Map$Entry.getValue(): java.lang.Object -> java.lang.Integer.intValue(): int -> java.util.Map$Entry.getKey(): java.lang.Object -> java.lang.Integer.intValue(): int -> java.util.List.size(): int -> java.lang.Integer.valueOf(int): java.lang.Integer -> java.util.Map.get(java.lang.Object): java.lang.Object -> java.lang.Integer.intValue(): int -> java.util.List.get(int): java.lang.Object -> java.util.List.add(java.lang.Object): boolean -> java.util.List.size(): int -> java.lang.Integer.valueOf(int): java.lang.Integer -> java.util.Map.get(java.lang.Object): java.lang.Object -> java.lang.Integer.intValue(): int -> java.util.List.get(int): java.lang.Object -> java.util.List.add(java.lang.Object): boolean -> java.util.List.size(): int -> java.lang.Integer.valueOf(int): java.lang.Integer -> java.util.Map.get(java.lang.Object): java.lang.Object -> java.lang.Integer.intValue(): int -> java.lang.Integer.intValue(): int -> java.util.List.get(int): java.lang.Object -> java.util.List.add(java.lang.Object): boolean -> java.util.List.size(): int -> java.lang.Integer.valueOf(int): java.lang.Integer -> java.util.Map.get(java.lang.Object): java.lang.Object -> java.lang.Integer.intValue(): int -> java.lang.Integer.intValue(): int -> java.util.List.size(): int -> java.lang.Integer.valueOf(int): java.lang.Integer -> java.util.Map.get(java.lang.Object): java.lang.Object -> java.lang.Integer.intValue(): int -> java.lang.Integer.intValue(): int -> java.util.List.size(): int -> java.lang.Integer.valueOf(int): java.lang.Integer -> java.util.Map.get(java.lang.Object): java.lang.Object -> java.lang.Integer.intValue(): int -> java.lang.Integer.intValue(): int -> java.util.List.size(): int -> java.lang.Integer.valueOf(int): java.lang.Integer -> java.util.Map.get(java.lang.Object): java.lang.Object -> java.lang.Integer.intValue(): int -> java.lang.Integer.intValue(): int -> java.util.List.size(): int -> java.lang.Integer.valueOf(int): java.lang.Integer -> java.util.Map.get(java.lang.Object): java.lang.Object -> java.lang.Integer.intValue(): int -> java.lang.Integer.intValue(): int -> java.util.List.size(): int
 [CALL] -> java.util.Collections.sort(java.util.List,java.util.Comparator): void [CALL] [CALL] [EXIT] [CALL] [EXIT] [EXIT] [CALL] [CALL] [EXIT] [CALL] [EXIT] [EXIT] [CALL] [CALL] [EXIT] [CALL] [EXIT] [EXIT] [CALL] [CALL] [EXIT] [CALL] [EXIT] [EXIT] [CALL] [CALL] [EXIT] [CALL] [EXIT] [EXIT] [CALL] [CALL] [EXIT] [CALL] [EXIT] [EXIT] [CALL] [CALL] [EXIT] [CALL] [EXIT] [EXIT] [CALL] [CALL] [EXIT] [CALL] [EXIT] [EXIT] [CALL] [CALL] [EXIT] [CALL] [EXIT] [EXIT] [CALL] [CALL] [EXIT] [CALL] [EXIT] [EXIT] [CALL] [CALL] [EXIT] [CALL] [EXIT] [EXIT] [CALL] [CALL] [EXIT] [CALL] [EXIT] [EXIT] [CALL] [CALL] [EXIT] [CALL] [EXIT] [EXIT] [CALL] [CALL] [EXIT] [CALL] [EXIT] [EXIT] [CALL] [CALL] [EXIT] [CALL] [EXIT] [EXIT] -> java.util.List.size(): int -> java.util.List.get(int): java.lang.Object [CALL] -> java.lang.Integer.valueOf(int): java.lang.Integer -> java.lang.Integer.valueOf(int): java.lang.Integer -> java.util.Map.put(java.lang.Object,java.lang.Object): java.lang.Object -> java.lang.Integer.valueOf(int): java.lang.Integer -> java.lang.Integer.valueOf(int): java.lang.Integer -> java.util.Map.containsKey(java.lang.Object): boolean -> java.lang.Integer.valueOf(int): java.lang.Integer -> java.util.Map.put(java.lang.Object,java.lang.Object): java.lang.Object [EXIT] -> java.util.List.size(): int -> java.util.List.get(int): java.lang.Object [CALL] [EXIT] [CALL] [EXIT] [CALL] [EXIT] [CALL] [EXIT] -> java.util.List.add(java.lang.Object): boolean -> java.util.List.size(): int [CALL] -> java.lang.Integer.valueOf(int): java.lang.Integer -> java.lang.Integer.valueOf(int): java.lang.Integer -> java.util.Map.put(java.lang.Object,java.lang.Object): java.lang.Object -> java.lang.Integer.valueOf(int): java.lang.Integer -> java.lang.Integer.valueOf(int): java.lang.Integer -> java.util.Map.containsKey(java.lang.Object): boolean -> java.lang.Integer.valueOf(int): java.lang.Integer -> java.util.Map.put(java.lang.Object,java.lang.Object): java.lang.Object [EXIT] -> java.util.List.size(): int -> java.util.List.get(int): java.lang.Object [CALL] [EXIT] [CALL] [EXIT] [CALL] [EXIT] [CALL] [EXIT] -> java.util.List.add(java.lang.Object): boolean -> java.util.List.size(): int [CALL] -> java.lang.Integer.valueOf(int): java.lang.Integer -> java.lang.Integer.valueOf(int): java.lang.Integer -> java.util.Map.put(java.lang.Object,java.lang.Object): java.lang.Object -> java.lang.Integer.valueOf(int): java.lang.Integer -> java.lang.Integer.valueOf(int): java.lang.Integer -> java.util.Map.containsKey(java.lang.Object): boolean -> java.lang.Integer.valueOf(int): java.lang.Integer -> java.util.Map.put(java.lang.Object,java.lang.Object): java.lang.Object [EXIT] -> java.util.List.size(): int -> java.util.List.get(int): java.lang.Object [CALL] [EXIT] [CALL] [EXIT] [CALL] [EXIT] [CALL] [EXIT] [CALL] [EXIT] [CALL] [EXIT] -> java.util.List.size(): int -> java.util.List.remove(int): java.lang.Object [CALL] [EXIT] [CALL] [EXIT] -> java.util.List.add(java.lang.Object): boolean -> java.util.List.size(): int [CALL] -> java.lang.Integer.valueOf(int): java.lang.Integer -> java.lang.Integer.valueOf(int): java.lang.Integer -> java.util.Map.put(java.lang.Object,java.lang.Object): java.lang.Object -> java.lang.Integer.valueOf(int): java.lang.Integer -> java.lang.Integer.valueOf(int): java.lang.Integer -> java.util.Map.containsKey(java.lang.Object): boolean -> java.lang.Integer.valueOf(int): java.lang.Integer -> java.util.Map.get(java.lang.Object): java.lang.Object -> java.lang.Integer.intValue(): int -> java.lang.Integer.valueOf(int): java.lang.Integer -> java.util.Map.put(java.lang.Object,java.lang.Object): java.lang.Object [EXIT] -> java.util.List.size(): int -> java.util.List.get(int): java.lang.Object [CALL] [EXIT] [CALL] [EXIT] [CALL] [EXIT] [CALL] [EXIT] -> java.util.List.add(java.lang.Object): boolean -> java.util.List.size(): int [CALL] -> java.lang.Integer.valueOf(int): java.lang.Integer -> java.lang.Integer.valueOf(int): java.lang.Integer -> java.util.Map.put(java.lang.Object,java.lang.Object): java.lang.Object -> java.lang.Integer.valueOf(int): java.lang.Integer -> java.lang.Integer.valueOf(int): java.lang.Integer -> java.util.Map.containsKey(java.lang.Object): boolean -> java.lang.Integer.valueOf(int): java.lang.Integer -> java.util.Map.put(java.lang.Object,java.lang.Object): java.lang.Object [EXIT] -> java.util.List.size(): int -> java.util.List.get(int): java.lang.Object [CALL] [EXIT] [CALL] [EXIT] [CALL] [EXIT] [CALL] [EXIT] [CALL] [EXIT] [CALL] [EXIT] -> java.util.List.size(): int -> java.util.List.remove(int): java.lang.Object [CALL] [EXIT] [CALL] [EXIT] -> java.util.List.add(java.lang.Object): boolean -> java.util.List.size(): int [CALL] -> java.lang.Integer.valueOf(int): java.lang.Integer -> java.lang.Integer.valueOf(int): java.lang.Integer -> java.util.Map.put(java.lang.Object,java.lang.Object): java.lang.Object -> java.lang.Integer.valueOf(int): java.lang.Integer -> java.lang.Integer.valueOf(int): java.lang.Integer -> java.util.Map.containsKey(java.lang.Object): boolean -> java.lang.Integer.valueOf(int): java.lang.Integer -> java.util.Map.get(java.lang.Object): java.lang.Object -> java.lang.Integer.intValue(): int -> java.lang.Integer.valueOf(int): java.lang.Integer -> java.util.Map.put(java.lang.Object,java.lang.Object): java.lang.Object [EXIT] -> java.util.List.size(): int -> java.util.List.get(int): java.lang.Object [CALL] [EXIT] [CALL] [EXIT] [CALL] [EXIT] [CALL] [EXIT] [CALL] [EXIT] [CALL] [EXIT] -> java.util.List.size(): int -> java.util.List.remove(int): java.lang.Object [CALL] [EXIT] [CALL] [EXIT] -> java.util.List.size(): int -> java.util.List.remove(int): java.lang.Object [CALL] [EXIT] [CALL] [EXIT] -> java.util.List.add(java.lang.Object): boolean -> java.util.List.size(): int [CALL] -> java.lang.Integer.valueOf(int): java.lang.Integer -> java.lang.Integer.valueOf(int): java.lang.Integer -> java.util.Map.put(java.lang.Object,java.lang.Object): java.lang.Object -> java.lang.Integer.valueOf(int): java.lang.Integer -> java.lang.Integer.valueOf(int): java.lang.Integer -> java.util.Map.containsKey(java.lang.Object): boolean -> java.lang.Integer.valueOf(int): java.lang.Integer -> java.util.Map.get(java.lang.Object): java.lang.Object -> java.lang.Integer.intValue(): int -> java.lang.Integer.valueOf(int): java.lang.Integer -> java.util.Map.put(java.lang.Object,java.lang.Object): java.lang.Object [EXIT] -> java.util.List.size(): int -> java.util.List.get(int): java.lang.Object [CALL] [EXIT] [CALL] [EXIT] [CALL] [EXIT] [CALL] [EXIT] [CALL] [EXIT] [CALL] [EXIT] -> java.util.List.size(): int -> java.util.List.remove(int): java.lang.Object [CALL] [EXIT] [CALL] [EXIT] -> java.util.List.add(java.lang.Object): boolean -> java.util.List.size(): int [CALL] -> java.lang.Integer.valueOf(int): java.lang.Integer -> java.lang.Integer.valueOf(int): java.lang.Integer -> java.util.Map.put(java.lang.Object,java.lang.Object): java.lang.Object -> java.lang.Integer.valueOf(int): java.lang.Integer -> java.lang.Integer.valueOf(int): java.lang.Integer -> java.util.Map.containsKey(java.lang.Object): boolean -> java.lang.Integer.valueOf(int): java.lang.Integer -> java.util.Map.get(java.lang.Object): java.lang.Object -> java.lang.Integer.intValue(): int -> java.lang.Integer.valueOf(int): java.lang.Integer -> java.util.Map.put(java.lang.Object,java.lang.Object): java.lang.Object [EXIT] -> java.util.List.size(): int -> java.util.Map.entrySet(): java.util.Set -> java.util.Set.iterator(): java.util.Iterator -> java.util.Iterator.hasNext(): boolean -> java.util.Iterator.next(): java.lang.Object -> java.util.Map$Entry.getValue(): java.lang.Object -> java.lang.Integer.intValue(): int -> java.lang.Integer.intValue(): int -> java.util.Iterator.hasNext(): boolean -> java.util.Iterator.next(): java.lang.Object -> java.util.Map$Entry.getValue(): java.lang.Object -> java.lang.Integer.intValue(): int -> java.lang.Integer.intValue(): int -> java.util.Iterator.hasNext(): boolean -> java.util.Iterator.next(): java.lang.Object -> java.util.Map$Entry.getValue(): java.lang.Object -> java.lang.Integer.intValue(): int -> java.util.Map$Entry.getKey(): java.lang.Object -> java.lang.Integer.intValue(): int -> java.util.List.size(): int -> java.lang.Integer.valueOf(int): java.lang.Integer -> java.util.Map.get(java.lang.Object): java.lang.Object -> java.lang.Integer.intValue(): int -> java.util.List.get(int): java.lang.Object -> java.util.List.add(java.lang.Object): boolean -> java.util.List.size(): int -> java.lang.Integer.valueOf(int): java.lang.Integer -> java.util.Map.get(java.lang.Object): java.lang.Object -> java.lang.Integer.intValue(): int -> java.util.List.get(int): java.lang.Object -> java.util.List.add(java.lang.Object): boolean -> java.util.List.size(): int -> java.lang.Integer.valueOf(int): java.lang.Integer -> java.util.Map.get(java.lang.Object): java.lang.Object -> java.lang.Integer.intValue(): int -> java.lang.Integer.intValue(): int -> java.util.List.get(int): java.lang.Object -> java.util.List.add(java.lang.Object): boolean -> java.util.List.size(): int -> java.lang.Integer.valueOf(int): java.lang.Integer -> java.util.Map.get(java.lang.Object): java.lang.Object -> java.lang.Integer.intValue(): int -> java.lang.Integer.intValue(): int -> java.util.List.size(): int -> java.lang.Integer.valueOf(int): java.lang.Integer -> java.util.Map.get(java.lang.Object): java.lang.Object -> java.lang.Integer.intValue(): int -> java.lang.Integer.intValue(): int -> java.util.List.size(): int -> java.lang.Integer.valueOf(int): java.lang.Integer -> java.util.Map.get(java.lang.Object): java.lang.Object -> java.lang.Integer.intValue(): int -> java.lang.Integer.intValue(): int -> java.util.List.size(): int -> java.lang.Integer.valueOf(int): java.lang.Integer -> java.util.Map.get(java.lang.Object): java.lang.Object -> java.lang.Integer.intValue(): int -> java.lang.Integer.intValue(): int -> java.util.List.size(): int -> java.lang.Integer.valueOf(int): java.lang.Integer -> java.util.Map.get(java.lang.Object): java.lang.Object -> java.lang.Integer.intValue(): int -> java.lang.Integer.intValue(): int -> java.util.List.size(): int [EXIT]