code: public void traverse(Node root) {
      try {
        initTraversal(root);
        curNode = root;
        pushScope(root);
        // null parent ensures that the shallow callbacks will traverse root
        traverseBranch(root, null);
        popScope();
      } catch (Error | Exception unexpectedException) {
        throwUnexpectedException(unexpectedException);
      }
    }
docs: Traverses a parse tree recursively.