private boolean clearLastRec(CodeTreeKind kind, List<CodeTree> children) { if (children == null) { return false; } for (int i = children.size() - 1; i >= 0; i--) { CodeTree child = children.get(i); if (child.getCodeKind() == kind) { children.remove(children.get(i)); return true; } else { if (clearLastRec(kind, child.getEnclosedElements())) { return true; } } } return false; }
private boolean clearLastRec(CodeTreeKind kind, List<CodeTree> children) { if (children == null) { return false; } for (int i = children.size() - 1; i >= 0; i--) { CodeTree child = children.get(i); if (child.getCodeKind() == kind) { children.remove(children.get(i)); return true; } else { if (clearLastRec(kind, child.getEnclosedElements())) { return true; } } } return false; }
private boolean removeLastIfEnqueued(BuilderCodeTree tree) { if (tree.getCodeKind() == REMOVE_LAST) { return !clearLastRec(tree.removeLast, currentElement.getEnclosedElements()); } List<CodeTree> childTree = tree.getEnclosedElements(); if (childTree != null && !childTree.isEmpty()) { CodeTree last = childTree.get(0); if (last instanceof BuilderCodeTree) { if (!removeLastIfEnqueued((BuilderCodeTree) last)) { childTree.remove(0); } } } return true; }
private boolean removeLastIfEnqueued(BuilderCodeTree tree) { if (tree.getCodeKind() == REMOVE_LAST) { return !clearLastRec(tree.removeLast, currentElement.getEnclosedElements()); } List<CodeTree> childTree = tree.getEnclosedElements(); if (childTree != null && !childTree.isEmpty()) { CodeTree last = childTree.get(0); if (last instanceof BuilderCodeTree) { if (!removeLastIfEnqueued((BuilderCodeTree) last)) { childTree.remove(0); } } } return true; }
private void clearLast(CodeTreeKind kind) { if (clearLastRec(kind, currentElement.getEnclosedElements())) { treeCount--; } else { // delay clearing the last BuilderCodeTree tree = new BuilderCodeTree(currentElement, REMOVE_LAST, null, null); tree.removeLast = kind; push(tree, false); } }
private void clearLast(CodeTreeKind kind) { if (clearLastRec(kind, currentElement.getEnclosedElements())) { treeCount--; } else { // delay clearing the last BuilderCodeTree tree = new BuilderCodeTree(currentElement, REMOVE_LAST, null, null); tree.removeLast = kind; push(tree, false); } }