@Override public Node process(Node node, @Nullable Void context) { Node result = super.process(node, context); nodes.add(node); return result; } }.process(tree, null);
@Override protected R visitExtract(Extract node, C context) { return process(node.getExpression(), context); }
@Override protected R visitArrayConstructor(ArrayConstructor node, C context) { for (Expression expression : node.getValues()) { process(expression, context); } return null; }
@Override protected R visitInListExpression(InListExpression node, C context) { for (Expression value : node.getValues()) { process(value, context); } return null; }
@Override protected R visitIsNotNullPredicate(IsNotNullPredicate node, C context) { return process(node.getValue(), context); }
@Override protected R visitIsNullPredicate(IsNullPredicate node, C context) { return process(node.getValue(), context); }
@Override protected R visitValues(Values node, C context) { for (Expression row : node.getRows()) { process(row, context); } return null; }
@Override protected R visitGroupBy(GroupBy node, C context) { for (GroupingElement groupingElement : node.getGroupingElements()) { process(groupingElement, context); } return null; }
@Override protected R visitInsert(Insert node, C context) { process(node.getQuery(), context); return null; }
@Override protected R visitGroupingOperation(GroupingOperation node, C context) { for (Expression columnArgument : node.getGroupingColumns()) { process(columnArgument, context); } return null; }
@Override protected R visitDereferenceExpression(DereferenceExpression node, C context) { process(node.getBase(), context); return null; }
@Override protected R visitOrderBy(OrderBy node, C context) { for (SortItem sortItem : node.getSortItems()) { process(sortItem, context); } return null; }
@Override protected R visitCreateView(CreateView node, C context) { process(node.getQuery(), context); return null; }
@Override protected R visitExists(ExistsPredicate node, C context) { process(node.getSubquery(), context); return null; }