docs: public Object depthFirst(NodeVisitor nodeVisitor, Collection<? extends Node> roots) {
          TraverserVisitor<Node> nodeTraverserVisitor = new TraverserVisitor<Node>() {
  
              @Override
              public TraversalControl enter(TraverserContext<Node> context) {
                  context.setVar(LeaveOrEnter.class, LeaveOrEnter.ENTER);
                  return context.thisNode().accept(context, nodeVisitor);
              }
  
              @Override
              public TraversalControl leave(TraverserContext<Node> context) {
                  context.setVar(LeaveOrEnter.class, LeaveOrEnter.LEAVE);
                  return context.thisNode().accept(context, nodeVisitor);
              }
          };
          return doTraverse(roots, nodeTraverserVisitor);
      }