void (IElementType chunkType, Deque<Pair<PsiBuilder.Marker, PsiBuilder.Marker>> parens, Deque<Pair<PsiBuilder.Marker, Integer>> siblings) { main: while (!siblings.isEmpty()) { Pair<PsiBuilder.Marker, PsiBuilder.Marker> parenPair = parens.peek(); int rating = siblings.getFirst().second; int count = 0; for (Pair<PsiBuilder.Marker, Integer> pair : siblings) { if (pair.second != rating || parenPair != null && pair.first == parenPair.second) break main; if (++count >= MAX_CHILDREN_IN_TREE) { PsiBuilder.Marker parentMarker = pair.first.precede(); parentMarker.setCustomEdgeTokenBinders(WhitespacesBinders.GREEDY_LEFT_BINDER, null); while (count-- > 0) { siblings.removeFirst(); } parentMarker.done(chunkType); siblings.addFirst(Pair.create(parentMarker, rating + 1)); continue main; } } break; } }