org.eclipse.wst.jsdt.core.dom

## Class ASTVisitor

- java.lang.Object
- - org.eclipse.wst.jsdt.core.dom.ASTVisitor

Direct Known Subclasses:
  BuildSystemVisitor, DefaultASTVisitor

    public abstract class ASTVisitor
    extends java.lang.Object

A visitor for abstract syntax trees.

For each different concrete AST node type T there are a pair of methods:

- `public boolean visit(T node)` - Visits the given node to perform some arbitrary operation. If `true` is returned, the given node's child nodes will be visited next; however, if `false` is returned, the given node's child nodes will not be visited. The default implementation provided by this class does nothing and returns `true` (with the exception of `ASTVisitor.visit(Javadoc)`). Subclasses may reimplement this method as needed.
- `public void endVisit(T node)` - Visits the given node to perform some arbitrary operation. When used in the conventional way, this method is called after all of the given node's children have been visited (or immediately, if `visit` returned `false`). The default implementation provided by this class does nothing. Subclasses may reimplement this method as needed.

In addition, there are a pair of methods for visiting AST nodes in the abstract, regardless of node type:

- `public void preVisit(ASTNode node)` - Visits the given node to perform some arbitrary operation. This method is invoked prior to the appropriate type-specific `visit` method. The default implementation of this method does nothing. Subclasses may reimplement this method as needed.
- `public void postVisit(ASTNode node)` - Visits the given node to perform some arbitrary operation. This method is invoked after the appropriate type-specific `endVisit` method. The default implementation of this method does nothing. Subclasses may reimplement this method as needed.

For nodes with list-valued properties, the child nodes within the list are visited in order. For nodes with multiple properties, the child nodes are visited in the order that most closely corresponds to the lexical reading order of the source program. For instance, for a type declaration node, the child ordering is: name, superclass, superinterfaces, and body declarations.

While it is possible to modify the tree in the visitor, care is required to ensure that the consequences are as expected and desirable. During the course of an ordinary visit starting at a given node, every node in the subtree is visited exactly twice, first with `visit` and then with `endVisit`. During a traversal of a stationary tree, each node is either behind (after `endVisit`), ahead (before `visit`), or in progress (between `visit` and the matching `endVisit`). Changes to the "behind" region of the tree are of no consequence to the visit in progress. Changes to the "ahead" region will be taken in stride. Changes to the "in progress" portion are the more interesting cases. With a node, the various properties are arranged in a linear list, with a cursor that separates the properties that have been visited from the ones that are still to be visited (the cursor is between the elements, rather than on an element). The cursor moves from the head to the tail of this list, advancing to the next position just before `visit` if called for that child. After the child subtree has been completely visited, the visit moves on the child immediately after the cursor. Removing a child while it is being visited does not alter the course of the visit. But any children added at positions after the cursor are considered in the "ahead" portion and will be visited.

Cases to watch out for:

- Moving a child node further down the list. This could result in the child subtree being visited multiple times; these visits are sequential.
- Moving a child node up into an ancestor. If the new home for the node is in the "ahead" portion, the subtree will be visited a second time; again, these visits are sequential.
- Moving a node down into a child. If the new home for the node is in the "ahead" portion, the subtree will be visited a second time; in this case, the visits will be nested. In some cases, this can lead to a stack overflow or out of memory condition.

Note that `LineComment` and `BlockComment` nodes are not normally visited in an AST because they are not considered part of main structure of the AST. Use `JavaScriptUnit.getCommentList()` to find these additional comments nodes.

See Also:
  `Provisional API: This class/interface is part of an interim API that is still under development and expected to change significantly before reaching stability. It is being made available at this early stage to solicit feedback from pioneering adopters on the understanding that any code that uses this API will almost certainly be broken (repeatedly) as the API evolves.`

### Constructor Summary

Constructors
Constructor and Description
`ASTVisitor()` Creates a new AST visitor instance.
`ASTVisitor(boolean visitDocTags)` Creates a new AST visitor instance.

### Method Summary

All Methods Instance Methods Concrete Methods
`void` `endVisit(AnonymousClassDeclaration node)` End of visit the given type-specific AST node.
`void` `endVisit(ArrayAccess node)` End of visit the given type-specific AST node.
`void` `endVisit(ArrayCreation node)` End of visit the given type-specific AST node.
`void` `endVisit(ArrayInitializer node)` End of visit the given type-specific AST node.
`void` `endVisit(ArrayName arrayName)` End of visit the given type-specific AST node.
`void` `endVisit(ArrayType node)` End of visit the given type-specific AST node.
`void` `endVisit(ArrowFunctionExpression arrowFunctionExpression)` End of visit the given type-specific AST node.
`void` `endVisit(Assignment node)` End of visit the given type-specific AST node.
`void` `endVisit(AssignmentName assignmentName)` End of visit the given type-specific AST node.
`void` `endVisit(Block node)` End of visit the given type-specific AST node.
`void` `endVisit(BlockComment node)` End of visit the given type-specific AST node.
`void` `endVisit(BooleanLiteral node)` End of visit the given type-specific AST node.
`void` `endVisit(BreakStatement node)` End of visit the given type-specific AST node.
`void` `endVisit(CatchClause node)` End of visit the given type-specific AST node.
`void` `endVisit(CharacterLiteral node)` End of visit the given type-specific AST node.
`void` `endVisit(ClassInstanceCreation node)` End of visit the given type-specific AST node.
`void` `endVisit(ConditionalExpression node)` End of visit the given type-specific AST node.
`void` `endVisit(ConstructorInvocation node)` End of visit the given type-specific AST node.
`void` `endVisit(ContinueStatement node)` End of visit the given type-specific AST node.
`void` `endVisit(DebuggerStatement debuggerStatement)` End of visit the given type-specific AST node.
`void` `endVisit(DoStatement node)` End of visit the given type-specific AST node.
`void` `endVisit(EmptyStatement node)` End of visit the given type-specific AST node.
`void` `endVisit(EnhancedForStatement node)` End of visit the given type-specific AST node.
`void` `endVisit(ExportDeclaration exportDeclaration)`
`void` `endVisit(ExpressionStatement node)` End of visit the given type-specific AST node.
`void` `endVisit(FieldAccess node)` End of visit the given type-specific AST node.
`void` `endVisit(FieldDeclaration node)` End of visit the given type-specific AST node.
`void` `endVisit(ForInStatement node)`
`void` `endVisit(ForOfStatement forOfStatement)` End of visit the given type-specific AST node.
`void` `endVisit(ForStatement node)` End of visit the given type-specific AST node.
`void` `endVisit(FunctionDeclaration node)` End of visit the given type-specific AST node.
`void` `endVisit(FunctionDeclarationStatement functionDeclarationStatement)`
`void` `endVisit(FunctionExpression node)`
`void` `endVisit(FunctionInvocation node)` End of visit the given type-specific AST node.
`void` `endVisit(FunctionRef node)` End of visit the given type-specific AST node.
`void` `endVisit(FunctionRefParameter node)` End of visit the given type-specific AST node.
`void` `endVisit(IfStatement node)` End of visit the given type-specific AST node.
`void` `endVisit(ImportDeclaration node)` End of visit the given type-specific AST node.
`void` `endVisit(InferredType node)`
`void` `endVisit(InfixExpression node)` End of visit the given type-specific AST node.
`void` `endVisit(Initializer node)` End of visit the given type-specific AST node.
`void` `endVisit(InstanceofExpression node)` End of visit the given type-specific AST node.
`void` `endVisit(JavaScriptUnit node)` End of visit the given type-specific AST node.
`void` `endVisit(JSdoc node)` End of visit the given type-specific AST node.
`void` `endVisit(LabeledStatement node)` End of visit the given type-specific AST node.
`void` `endVisit(LineComment node)` End of visit the given type-specific AST node.
`void` `endVisit(ListExpression node)`
`void` `endVisit(MemberRef node)` End of visit the given type-specific AST node.
`void` `endVisit(MetaProperty metaProperty)` End of visit the given type-specific AST node.
`void` `endVisit(Modifier node)` End of visit the given type-specific AST node.
`void` `endVisit(ModuleSpecifier moduleSpecifier)` End of visit the given type-specific AST node.
`void` `endVisit(NullLiteral node)` End of visit the given type-specific AST node.
`void` `endVisit(NumberLiteral node)` End of visit the given type-specific AST node.
`void` `endVisit(ObjectLiteral node)`
`void` `endVisit(ObjectLiteralField node)`
`void` `endVisit(ObjectName objectName)` End of visit the given type-specific AST node.
`void` `endVisit(PackageDeclaration node)` End of visit the given type-specific AST node.
`void` `endVisit(ParenthesizedExpression node)` End of visit the given type-specific AST node.
`void` `endVisit(PostfixExpression node)` End of visit the given type-specific AST node.
`void` `endVisit(PrefixExpression node)` End of visit the given type-specific AST node.
`void` `endVisit(PrimitiveType node)` End of visit the given type-specific AST node.
`void` `endVisit(QualifiedName node)` End of visit the given type-specific AST node.
`void` `endVisit(QualifiedType node)` End of visit the given type-specific AST node.
`void` `endVisit(RegularExpressionLiteral node)`
`void` `endVisit(RestElementName restElementName)` End of visit the given type-specific AST node.
`void` `endVisit(ReturnStatement node)` End of visit the given type-specific AST node.
`void` `endVisit(SimpleName node)` End of visit the given type-specific AST node.
`void` `endVisit(SimpleType node)` End of visit the given type-specific AST node.
`void` `endVisit(SingleVariableDeclaration node)` End of visit the given type-specific AST node.
`void` `endVisit(SpreadElement spreadElement)` End of visit the given type-specific AST node.
`void` `endVisit(StringLiteral node)` End of visit the given type-specific AST node.
`void` `endVisit(SuperConstructorInvocation node)` End of visit the given type-specific AST node.
`void` `endVisit(SuperFieldAccess node)` End of visit the given type-specific AST node.
`void` `endVisit(SuperMethodInvocation node)` End of visit the given type-specific AST node.
`void` `endVisit(SwitchCase node)` End of visit the given type-specific AST node.
`void` `endVisit(SwitchStatement node)` End of visit the given type-specific AST node.
`void` `endVisit(TagElement node)` End of visit the given type-specific AST node.
`void` `endVisit(TemplateElement templateElement)` End of visit the given type-specific AST node.
`void` `endVisit(TemplateLiteral templateLiteral)` End of visit the given type-specific AST node.
`void` `endVisit(TextElement node)` End of visit the given type-specific AST node.
`void` `endVisit(ThisExpression node)` End of visit the given type-specific AST node.
`void` `endVisit(ThrowStatement node)` End of visit the given type-specific AST node.
`void` `endVisit(TryStatement node)` End of visit the given type-specific AST node.
`void` `endVisit(TypeDeclaration node)` End of visit the given type-specific AST node.
`void` `endVisit(TypeDeclarationExpression typeDeclarationExpression)`
`void` `endVisit(TypeDeclarationStatement node)` End of visit the given type-specific AST node.
`void` `endVisit(TypeLiteral node)` End of visit the given type-specific AST node.
`void` `endVisit(UndefinedLiteral node)`
`void` `endVisit(VariableDeclarationExpression node)` End of visit the given type-specific AST node.
`void` `endVisit(VariableDeclarationFragment node)` End of visit the given type-specific AST node.
`void` `endVisit(VariableDeclarationStatement node)` End of visit the given type-specific AST node.
`void` `endVisit(WhileStatement node)` End of visit the given type-specific AST node.
`void` `endVisit(WithStatement node)`
`void` `endVisit(YieldExpression yieldExpression)` End of visit the given type-specific AST node.
`void` `postVisit(ASTNode node)` Visits the given AST node following the type-specific visit (after `endVisit`).
`void` `preVisit(ASTNode node)` Visits the given AST node prior to the type-specific visit.
`boolean` `visit(AnonymousClassDeclaration node)` Visits the given type-specific AST node.
`boolean` `visit(ArrayAccess node)` Visits the given type-specific AST node.
`boolean` `visit(ArrayCreation node)` Visits the given type-specific AST node.
`boolean` `visit(ArrayInitializer node)` Visits the given type-specific AST node.
`boolean` `visit(ArrayName arrayName)` Visits the given type-specific AST node.
`boolean` `visit(ArrayType node)` Visits the given type-specific AST node.
`boolean` `visit(ArrowFunctionExpression arrowFunctionExpression)` Visits the given type-specific AST node.
`boolean` `visit(Assignment node)` Visits the given type-specific AST node.
`boolean` `visit(AssignmentName assignmentName)` Visits the given type-specific AST node.
`boolean` `visit(Block node)` Visits the given type-specific AST node.
`boolean` `visit(BlockComment node)` Visits the given type-specific AST node.
`boolean` `visit(BooleanLiteral node)` Visits the given type-specific AST node.
`boolean` `visit(BreakStatement node)` Visits the given type-specific AST node.
`boolean` `visit(CatchClause node)` Visits the given type-specific AST node.
`boolean` `visit(CharacterLiteral node)` Visits the given type-specific AST node.
`boolean` `visit(ClassInstanceCreation node)` Visits the given type-specific AST node.
`boolean` `visit(ConditionalExpression node)` Visits the given type-specific AST node.
`boolean` `visit(ConstructorInvocation node)` Visits the given type-specific AST node.
`boolean` `visit(ContinueStatement node)` Visits the given type-specific AST node.
`boolean` `visit(DebuggerStatement debuggerStatement)` Visits the given type-specific AST node.
`boolean` `visit(DoStatement node)` Visits the given type-specific AST node.
`boolean` `visit(EmptyStatement node)` Visits the given type-specific AST node.
`boolean` `visit(EnhancedForStatement node)` Visits the given type-specific AST node.
`boolean` `visit(ExportDeclaration exportDeclaration)` Visits the given type-specific AST node.
`boolean` `visit(ExpressionStatement node)` Visits the given type-specific AST node.
`boolean` `visit(FieldAccess node)` Visits the given type-specific AST node.
`boolean` `visit(FieldDeclaration node)` Visits the given type-specific AST node.
`boolean` `visit(ForInStatement node)`
`boolean` `visit(ForOfStatement node)` Visits the given type-specific AST node.
`boolean` `visit(ForStatement node)` Visits the given type-specific AST node.
`boolean` `visit(FunctionDeclaration node)` Visits the given type-specific AST node.
`boolean` `visit(FunctionDeclarationStatement functionDeclarationStatement)` Visits the given type-specific AST node.
`boolean` `visit(FunctionExpression node)`
`boolean` `visit(FunctionInvocation node)` Visits the given type-specific AST node.
`boolean` `visit(FunctionRef node)` Visits the given type-specific AST node.
`boolean` `visit(FunctionRefParameter node)` Visits the given type-specific AST node.
`boolean` `visit(IfStatement node)` Visits the given type-specific AST node.
`boolean` `visit(ImportDeclaration node)` Visits the given type-specific AST node.
`boolean` `visit(InferredType node)`
`boolean` `visit(InfixExpression node)` Visits the given type-specific AST node.
`boolean` `visit(Initializer node)` Visits the given type-specific AST node.
`boolean` `visit(InstanceofExpression node)` Visits the given type-specific AST node.
`boolean` `visit(JavaScriptUnit node)` Visits the given type-specific AST node.
`boolean` `visit(JSdoc node)` Visits the given AST node.
`boolean` `visit(LabeledStatement node)` Visits the given type-specific AST node.
`boolean` `visit(LineComment node)` Visits the given type-specific AST node.
`boolean` `visit(ListExpression node)`
`boolean` `visit(MemberRef node)` Visits the given type-specific AST node.
`boolean` `visit(MetaProperty metaProperty)` Visits the given type-specific AST node.
`boolean` `visit(Modifier node)` Visits the given type-specific AST node.
`boolean` `visit(ModuleSpecifier moduleSpecifier)` Visits the given type-specific AST node.
`boolean` `visit(NullLiteral node)` Visits the given type-specific AST node.
`boolean` `visit(NumberLiteral node)` Visits the given type-specific AST node.
`boolean` `visit(ObjectLiteral node)`
`boolean` `visit(ObjectLiteralField node)`
`boolean` `visit(ObjectName objectName)` Visits the given type-specific AST node.
`boolean` `visit(PackageDeclaration node)` Visits the given type-specific AST node.
`boolean` `visit(ParenthesizedExpression node)` Visits the given type-specific AST node.
`boolean` `visit(PostfixExpression node)` Visits the given type-specific AST node.
`boolean` `visit(PrefixExpression node)` Visits the given type-specific AST node.
`boolean` `visit(PrimitiveType node)` Visits the given type-specific AST node.
`boolean` `visit(QualifiedName node)` Visits the given type-specific AST node.
`boolean` `visit(QualifiedType node)` Visits the given type-specific AST node.
`boolean` `visit(RegularExpressionLiteral node)`
`boolean` `visit(RestElementName restElementName)` Visits the given type-specific AST node.
`boolean` `visit(ReturnStatement node)` Visits the given type-specific AST node.
`boolean` `visit(SimpleName node)` Visits the given type-specific AST node.
`boolean` `visit(SimpleType node)` Visits the given type-specific AST node.
`boolean` `visit(SingleVariableDeclaration node)` Visits the given type-specific AST node.
`boolean` `visit(SpreadElement spreadElement)` Visits the given type-specific AST node.
`boolean` `visit(StringLiteral node)` Visits the given type-specific AST node.
`boolean` `visit(SuperConstructorInvocation node)` Visits the given type-specific AST node.
`boolean` `visit(SuperFieldAccess node)` Visits the given type-specific AST node.
`boolean` `visit(SuperMethodInvocation node)` Visits the given type-specific AST node.
`boolean` `visit(SwitchCase node)` Visits the given type-specific AST node.
`boolean` `visit(SwitchStatement node)` Visits the given type-specific AST node.
`boolean` `visit(TagElement node)` Visits the given type-specific AST node.
`boolean` `visit(TemplateElement templateElement)` Visits the given type-specific AST node.
`boolean` `visit(TemplateLiteral templateLiteral)` Visits the given type-specific AST node.
`boolean` `visit(TextElement node)` Visits the given type-specific AST node.
`boolean` `visit(ThisExpression node)` Visits the given type-specific AST node.
`boolean` `visit(ThrowStatement node)` Visits the given type-specific AST node.
`boolean` `visit(TryStatement node)` Visits the given type-specific AST node.
`boolean` `visit(TypeDeclaration node)` Visits the given type-specific AST node.
`boolean` `visit(TypeDeclarationExpression typeDeclarationExpression)` Visits the given type-specific AST node.
`boolean` `visit(TypeDeclarationStatement node)` Visits the given type-specific AST node.
`boolean` `visit(TypeLiteral node)` Visits the given type-specific AST node.
`boolean` `visit(UndefinedLiteral node)`
`boolean` `visit(VariableDeclarationExpression node)` Visits the given type-specific AST node.
`boolean` `visit(VariableDeclarationFragment node)` Visits the given type-specific AST node.
`boolean` `visit(VariableDeclarationStatement node)` Visits the given type-specific AST node.
`boolean` `visit(WhileStatement node)` Visits the given type-specific AST node.
`boolean` `visit(WithStatement node)`
`boolean` `visit(YieldExpression yieldExpression)` Visits the given type-specific AST node.

### Methods inherited from class java.lang.Object

`clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`

### Constructor Detail

#### ASTVisitor

    public ASTVisitor()

Creates a new AST visitor instance.

For backwards compatibility, the visitor does not visit tag elements below doc comments by default. Use `ASTVisitor(true)` for an visitor that includes doc comments by default.

#### ASTVisitor

    public ASTVisitor(boolean visitDocTags)

Creates a new AST visitor instance.

Parameters:
  `visitDocTags` - `true` if doc comment tags are to be visited by default, and `false` otherwise
See Also:
  `JSdoc.tags()`, `visit(JSdoc)`

### Method Detail

#### preVisit

    public void preVisit(ASTNode node)

Visits the given AST node prior to the type-specific visit. (before `visit`).

The default implementation does nothing. Subclasses may reimplement.

Parameters:
  `node` - the node to visit

#### postVisit

    public void postVisit(ASTNode node)

Visits the given AST node following the type-specific visit (after `endVisit`).

The default implementation does nothing. Subclasses may reimplement.

Parameters:
  `node` - the node to visit

#### visit

    public boolean visit(AnonymousClassDeclaration node)

Visits the given type-specific AST node.

The default implementation does nothing and return true. Subclasses may reimplement.

Parameters:
  `node` - the node to visit
Returns:
  `true` if the children of this node should be visited, and `false` if the children of this node should be skipped

#### visit

    public boolean visit(ArrayAccess node)

Visits the given type-specific AST node.

The default implementation does nothing and return true. Subclasses may reimplement.

Parameters:
  `node` - the node to visit
Returns:
  `true` if the children of this node should be visited, and `false` if the children of this node should be skipped

#### visit

    public boolean visit(ArrayCreation node)

Visits the given type-specific AST node.

The default implementation does nothing and return true. Subclasses may reimplement.

Parameters:
  `node` - the node to visit
Returns:
  `true` if the children of this node should be visited, and `false` if the children of this node should be skipped

#### visit

    public boolean visit(ArrayInitializer node)

Visits the given type-specific AST node.

The default implementation does nothing and return true. Subclasses may reimplement.

Parameters:
  `node` - the node to visit
Returns:
  `true` if the children of this node should be visited, and `false` if the children of this node should be skipped

#### visit

    public boolean visit(ArrayType node)

Visits the given type-specific AST node.

The default implementation does nothing and return true. Subclasses may reimplement.

Parameters:
  `node` - the node to visit
Returns:
  `true` if the children of this node should be visited, and `false` if the children of this node should be skipped

#### visit

    public boolean visit(Assignment node)

Visits the given type-specific AST node.

The default implementation does nothing and return true. Subclasses may reimplement.

Parameters:
  `node` - the node to visit
Returns:
  `true` if the children of this node should be visited, and `false` if the children of this node should be skipped

#### visit

    public boolean visit(Block node)

Visits the given type-specific AST node.

The default implementation does nothing and return true. Subclasses may reimplement.

Parameters:
  `node` - the node to visit
Returns:
  `true` if the children of this node should be visited, and `false` if the children of this node should be skipped

#### visit

    public boolean visit(BlockComment node)

Visits the given type-specific AST node.

The default implementation does nothing and return true. Subclasses may reimplement.

Note: `LineComment` and `BlockComment` nodes are not considered part of main structure of the AST. This method will only be called if a client goes out of their way to visit this kind of node explicitly.

Parameters:
  `node` - the node to visit
Returns:
  `true` if the children of this node should be visited, and `false` if the children of this node should be skipped

#### visit

    public boolean visit(BooleanLiteral node)

Visits the given type-specific AST node.

The default implementation does nothing and return true. Subclasses may reimplement.

Parameters:
  `node` - the node to visit
Returns:
  `true` if the children of this node should be visited, and `false` if the children of this node should be skipped

#### visit

    public boolean visit(BreakStatement node)

Visits the given type-specific AST node.

The default implementation does nothing and return true. Subclasses may reimplement.

Parameters:
  `node` - the node to visit
Returns:
  `true` if the children of this node should be visited, and `false` if the children of this node should be skipped

#### visit

    public boolean visit(CatchClause node)

Visits the given type-specific AST node.

The default implementation does nothing and return true. Subclasses may reimplement.

Parameters:
  `node` - the node to visit
Returns:
  `true` if the children of this node should be visited, and `false` if the children of this node should be skipped

#### visit

    public boolean visit(CharacterLiteral node)

Visits the given type-specific AST node.

The default implementation does nothing and return true. Subclasses may reimplement.

Parameters:
  `node` - the node to visit
Returns:
  `true` if the children of this node should be visited, and `false` if the children of this node should be skipped

#### visit

    public boolean visit(RegularExpressionLiteral node)

#### visit

    public boolean visit(ClassInstanceCreation node)

Visits the given type-specific AST node.

The default implementation does nothing and return true. Subclasses may reimplement.

Parameters:
  `node` - the node to visit
Returns:
  `true` if the children of this node should be visited, and `false` if the children of this node should be skipped

#### visit

    public boolean visit(JavaScriptUnit node)

Visits the given type-specific AST node.

The default implementation does nothing and return true. Subclasses may reimplement.

Parameters:
  `node` - the node to visit
Returns:
  `true` if the children of this node should be visited, and `false` if the children of this node should be skipped

#### visit

    public boolean visit(ConditionalExpression node)

Visits the given type-specific AST node.

The default implementation does nothing and return true. Subclasses may reimplement.

Parameters:
  `node` - the node to visit
Returns:
  `true` if the children of this node should be visited, and `false` if the children of this node should be skipped

#### visit

    public boolean visit(ConstructorInvocation node)

Visits the given type-specific AST node.

The default implementation does nothing and return true. Subclasses may reimplement.

Parameters:
  `node` - the node to visit
Returns:
  `true` if the children of this node should be visited, and `false` if the children of this node should be skipped

#### visit

    public boolean visit(ContinueStatement node)

Visits the given type-specific AST node.

The default implementation does nothing and return true. Subclasses may reimplement.

Parameters:
  `node` - the node to visit
Returns:
  `true` if the children of this node should be visited, and `false` if the children of this node should be skipped

#### visit

    public boolean visit(DoStatement node)

Visits the given type-specific AST node.

The default implementation does nothing and return true. Subclasses may reimplement.

Parameters:
  `node` - the node to visit
Returns:
  `true` if the children of this node should be visited, and `false` if the children of this node should be skipped

#### visit

    public boolean visit(EmptyStatement node)

Visits the given type-specific AST node.

The default implementation does nothing and return true. Subclasses may reimplement.

Parameters:
  `node` - the node to visit
Returns:
  `true` if the children of this node should be visited, and `false` if the children of this node should be skipped

#### visit

    public boolean visit(EnhancedForStatement node)

Visits the given type-specific AST node.

The default implementation does nothing and return true. Subclasses may reimplement.

Parameters:
  `node` - the node to visit
Returns:
  `true` if the children of this node should be visited, and `false` if the children of this node should be skipped

#### visit

    public boolean visit(ExpressionStatement node)

Visits the given type-specific AST node.

The default implementation does nothing and return true. Subclasses may reimplement.

Parameters:
  `node` - the node to visit
Returns:
  `true` if the children of this node should be visited, and `false` if the children of this node should be skipped

#### visit

    public boolean visit(FieldAccess node)

Visits the given type-specific AST node.

The default implementation does nothing and return true. Subclasses may reimplement.

Parameters:
  `node` - the node to visit
Returns:
  `true` if the children of this node should be visited, and `false` if the children of this node should be skipped

#### visit

    public boolean visit(FieldDeclaration node)

Visits the given type-specific AST node.

The default implementation does nothing and return true. Subclasses may reimplement.

Parameters:
  `node` - the node to visit
Returns:
  `true` if the children of this node should be visited, and `false` if the children of this node should be skipped

#### visit

    public boolean visit(ForStatement node)

Visits the given type-specific AST node.

The default implementation does nothing and return true. Subclasses may reimplement.

Parameters:
  `node` - the node to visit
Returns:
  `true` if the children of this node should be visited, and `false` if the children of this node should be skipped

#### visit

    public boolean visit(ForInStatement node)

#### visit

    public boolean visit(ForOfStatement node)

Visits the given type-specific AST node.

The default implementation does nothing and return true. Subclasses may reimplement.

Parameters:
  `node` - the node to visit
Returns:
  `true` if the children of this node should be visited, and `false` if the children of this node should be skipped

#### visit

    public boolean visit(IfStatement node)

Visits the given type-specific AST node.

The default implementation does nothing and return true. Subclasses may reimplement.

Parameters:
  `node` - the node to visit
Returns:
  `true` if the children of this node should be visited, and `false` if the children of this node should be skipped

#### visit

    public boolean visit(ImportDeclaration node)

Visits the given type-specific AST node.

The default implementation does nothing and return true. Subclasses may reimplement.

Parameters:
  `node` - the node to visit
Returns:
  `true` if the children of this node should be visited, and `false` if the children of this node should be skipped

#### visit

    public boolean visit(InferredType node)

#### visit

    public boolean visit(InfixExpression node)

Visits the given type-specific AST node.

The default implementation does nothing and return true. Subclasses may reimplement.

Parameters:
  `node` - the node to visit
Returns:
  `true` if the children of this node should be visited, and `false` if the children of this node should be skipped

#### visit

    public boolean visit(InstanceofExpression node)

Visits the given type-specific AST node.

The default implementation does nothing and return true. Subclasses may reimplement.

Parameters:
  `node` - the node to visit
Returns:
  `true` if the children of this node should be visited, and `false` if the children of this node should be skipped

#### visit

    public boolean visit(Initializer node)

Visits the given type-specific AST node.

The default implementation does nothing and return true. Subclasses may reimplement.

Parameters:
  `node` - the node to visit
Returns:
  `true` if the children of this node should be visited, and `false` if the children of this node should be skipped

#### visit

    public boolean visit(JSdoc node)

Visits the given AST node.

Unlike other node types, the boolean returned by the default implementation is controlled by a constructor-supplied parameter `ASTVisitor(boolean)` which is `false` by default. Subclasses may reimplement.

Parameters:
  `node` - the node to visit
Returns:
  `true` if the children of this node should be visited, and `false` if the children of this node should be skipped
See Also:
  `ASTVisitor()`, `ASTVisitor(boolean)`

#### visit

    public boolean visit(LabeledStatement node)

Visits the given type-specific AST node.

The default implementation does nothing and return true. Subclasses may reimplement.

Parameters:
  `node` - the node to visit
Returns:
  `true` if the children of this node should be visited, and `false` if the children of this node should be skipped

#### visit

    public boolean visit(LineComment node)

Visits the given type-specific AST node.

The default implementation does nothing and return true. Subclasses may reimplement.

Note: `LineComment` and `BlockComment` nodes are not considered part of main structure of the AST. This method will only be called if a client goes out of their way to visit this kind of node explicitly.

Parameters:
  `node` - the node to visit
Returns:
  `true` if the children of this node should be visited, and `false` if the children of this node should be skipped

#### visit

    public boolean visit(ListExpression node)

#### visit

    public boolean visit(MemberRef node)

Visits the given type-specific AST node.

The default implementation does nothing and return true. Subclasses may reimplement.

Parameters:
  `node` - the node to visit
Returns:
  `true` if the children of this node should be visited, and `false` if the children of this node should be skipped

#### visit

    public boolean visit(FunctionRef node)

Visits the given type-specific AST node.

The default implementation does nothing and return true. Subclasses may reimplement.

Parameters:
  `node` - the node to visit
Returns:
  `true` if the children of this node should be visited, and `false` if the children of this node should be skipped

#### visit

    public boolean visit(FunctionRefParameter node)

Visits the given type-specific AST node.

The default implementation does nothing and return true. Subclasses may reimplement.

Parameters:
  `node` - the node to visit
Returns:
  `true` if the children of this node should be visited, and `false` if the children of this node should be skipped

#### visit

    public boolean visit(FunctionDeclaration node)

Visits the given type-specific AST node.

The default implementation does nothing and return true. Subclasses may reimplement.

Parameters:
  `node` - the node to visit
Returns:
  `true` if the children of this node should be visited, and `false` if the children of this node should be skipped

#### visit

    public boolean visit(FunctionInvocation node)

Visits the given type-specific AST node.

The default implementation does nothing and return true. Subclasses may reimplement.

Parameters:
  `node` - the node to visit
Returns:
  `true` if the children of this node should be visited, and `false` if the children of this node should be skipped

#### visit

    public boolean visit(Modifier node)

Visits the given type-specific AST node.

The default implementation does nothing and return true. Subclasses may reimplement.

Parameters:
  `node` - the node to visit
Returns:
  `true` if the children of this node should be visited, and `false` if the children of this node should be skipped

#### visit

    public boolean visit(NullLiteral node)

Visits the given type-specific AST node.

The default implementation does nothing and return true. Subclasses may reimplement.

Parameters:
  `node` - the node to visit
Returns:
  `true` if the children of this node should be visited, and `false` if the children of this node should be skipped

#### visit

    public boolean visit(UndefinedLiteral node)

#### visit

    public boolean visit(NumberLiteral node)

Visits the given type-specific AST node.

The default implementation does nothing and return true. Subclasses may reimplement.

Parameters:
  `node` - the node to visit
Returns:
  `true` if the children of this node should be visited, and `false` if the children of this node should be skipped

#### visit

    public boolean visit(PackageDeclaration node)

Visits the given type-specific AST node.

The default implementation does nothing and return true. Subclasses may reimplement.

Parameters:
  `node` - the node to visit
Returns:
  `true` if the children of this node should be visited, and `false` if the children of this node should be skipped

#### visit

    public boolean visit(ParenthesizedExpression node)

Visits the given type-specific AST node.

The default implementation does nothing and return true. Subclasses may reimplement.

Parameters:
  `node` - the node to visit
Returns:
  `true` if the children of this node should be visited, and `false` if the children of this node should be skipped

#### visit

    public boolean visit(PostfixExpression node)

Visits the given type-specific AST node.

The default implementation does nothing and return true. Subclasses may reimplement.

Parameters:
  `node` - the node to visit
Returns:
  `true` if the children of this node should be visited, and `false` if the children of this node should be skipped

#### visit

    public boolean visit(PrefixExpression node)

Visits the given type-specific AST node.

The default implementation does nothing and return true. Subclasses may reimplement.

Parameters:
  `node` - the node to visit
Returns:
  `true` if the children of this node should be visited, and `false` if the children of this node should be skipped

#### visit

    public boolean visit(PrimitiveType node)

Visits the given type-specific AST node.

The default implementation does nothing and return true. Subclasses may reimplement.

Parameters:
  `node` - the node to visit
Returns:
  `true` if the children of this node should be visited, and `false` if the children of this node should be skipped

#### visit

    public boolean visit(QualifiedName node)

Visits the given type-specific AST node.

The default implementation does nothing and return true. Subclasses may reimplement.

Parameters:
  `node` - the node to visit
Returns:
  `true` if the children of this node should be visited, and `false` if the children of this node should be skipped

#### visit

    public boolean visit(QualifiedType node)

Visits the given type-specific AST node.

The default implementation does nothing and return true. Subclasses may reimplement.

Parameters:
  `node` - the node to visit
Returns:
  `true` if the children of this node should be visited, and `false` if the children of this node should be skipped

#### visit

    public boolean visit(ReturnStatement node)

Visits the given type-specific AST node.

The default implementation does nothing and return true. Subclasses may reimplement.

Parameters:
  `node` - the node to visit
Returns:
  `true` if the children of this node should be visited, and `false` if the children of this node should be skipped

#### visit

    public boolean visit(SimpleName node)

Visits the given type-specific AST node.

The default implementation does nothing and return true. Subclasses may reimplement.

Parameters:
  `node` - the node to visit
Returns:
  `true` if the children of this node should be visited, and `false` if the children of this node should be skipped

#### visit

    public boolean visit(SimpleType node)

Visits the given type-specific AST node.

The default implementation does nothing and return true. Subclasses may reimplement.

Parameters:
  `node` - the node to visit
Returns:
  `true` if the children of this node should be visited, and `false` if the children of this node should be skipped

#### visit

    public boolean visit(SingleVariableDeclaration node)

Visits the given type-specific AST node.

The default implementation does nothing and return true. Subclasses may reimplement.

Parameters:
  `node` - the node to visit
Returns:
  `true` if the children of this node should be visited, and `false` if the children of this node should be skipped

#### visit

    public boolean visit(StringLiteral node)

Visits the given type-specific AST node.

The default implementation does nothing and return true. Subclasses may reimplement.

Parameters:
  `node` - the node to visit
Returns:
  `true` if the children of this node should be visited, and `false` if the children of this node should be skipped

#### visit

    public boolean visit(SuperConstructorInvocation node)

Visits the given type-specific AST node.

The default implementation does nothing and return true. Subclasses may reimplement.

Parameters:
  `node` - the node to visit
Returns:
  `true` if the children of this node should be visited, and `false` if the children of this node should be skipped

#### visit

    public boolean visit(SuperFieldAccess node)

Visits the given type-specific AST node.

The default implementation does nothing and return true. Subclasses may reimplement.

Parameters:
  `node` - the node to visit
Returns:
  `true` if the children of this node should be visited, and `false` if the children of this node should be skipped

#### visit

    public boolean visit(SuperMethodInvocation node)

Visits the given type-specific AST node.

The default implementation does nothing and return true. Subclasses may reimplement.

Parameters:
  `node` - the node to visit
Returns:
  `true` if the children of this node should be visited, and `false` if the children of this node should be skipped

#### visit

    public boolean visit(SwitchCase node)

Visits the given type-specific AST node.

The default implementation does nothing and return true. Subclasses may reimplement.

Parameters:
  `node` - the node to visit
Returns:
  `true` if the children of this node should be visited, and `false` if the children of this node should be skipped

#### visit

    public boolean visit(SwitchStatement node)

Visits the given type-specific AST node.

The default implementation does nothing and return true. Subclasses may reimplement.

Parameters:
  `node` - the node to visit
Returns:
  `true` if the children of this node should be visited, and `false` if the children of this node should be skipped

#### visit

    public boolean visit(TagElement node)

Visits the given type-specific AST node.

The default implementation does nothing and return true. Subclasses may reimplement.

Parameters:
  `node` - the node to visit
Returns:
  `true` if the children of this node should be visited, and `false` if the children of this node should be skipped

#### visit

    public boolean visit(TextElement node)

Visits the given type-specific AST node.

The default implementation does nothing and return true. Subclasses may reimplement.

Parameters:
  `node` - the node to visit
Returns:
  `true` if the children of this node should be visited, and `false` if the children of this node should be skipped

#### visit

    public boolean visit(ThisExpression node)

Visits the given type-specific AST node.

The default implementation does nothing and return true. Subclasses may reimplement.

Parameters:
  `node` - the node to visit
Returns:
  `true` if the children of this node should be visited, and `false` if the children of this node should be skipped

#### visit

    public boolean visit(ThrowStatement node)

Visits the given type-specific AST node.

The default implementation does nothing and return true. Subclasses may reimplement.

Parameters:
  `node` - the node to visit
Returns:
  `true` if the children of this node should be visited, and `false` if the children of this node should be skipped

#### visit

    public boolean visit(TryStatement node)

Visits the given type-specific AST node.

The default implementation does nothing and return true. Subclasses may reimplement.

Parameters:
  `node` - the node to visit
Returns:
  `true` if the children of this node should be visited, and `false` if the children of this node should be skipped

#### visit

    public boolean visit(TypeDeclaration node)

Visits the given type-specific AST node.

The default implementation does nothing and return true. Subclasses may reimplement.

Parameters:
  `node` - the node to visit
Returns:
  `true` if the children of this node should be visited, and `false` if the children of this node should be skipped

#### visit

    public boolean visit(TypeDeclarationStatement node)

Visits the given type-specific AST node.

The default implementation does nothing and return true. Subclasses may reimplement.

Parameters:
  `node` - the node to visit
Returns:
  `true` if the children of this node should be visited, and `false` if the children of this node should be skipped

#### visit

    public boolean visit(TypeLiteral node)

Visits the given type-specific AST node.

The default implementation does nothing and return true. Subclasses may reimplement.

Parameters:
  `node` - the node to visit
Returns:
  `true` if the children of this node should be visited, and `false` if the children of this node should be skipped

#### visit

    public boolean visit(VariableDeclarationExpression node)

Visits the given type-specific AST node.

The default implementation does nothing and return true. Subclasses may reimplement.

Parameters:
  `node` - the node to visit
Returns:
  `true` if the children of this node should be visited, and `false` if the children of this node should be skipped

#### visit

    public boolean visit(VariableDeclarationStatement node)

Visits the given type-specific AST node.

The default implementation does nothing and return true. Subclasses may reimplement.

Parameters:
  `node` - the node to visit
Returns:
  `true` if the children of this node should be visited, and `false` if the children of this node should be skipped

#### visit

    public boolean visit(VariableDeclarationFragment node)

Visits the given type-specific AST node.

The default implementation does nothing and return true. Subclasses may reimplement.

Parameters:
  `node` - the node to visit
Returns:
  `true` if the children of this node should be visited, and `false` if the children of this node should be skipped

#### visit

    public boolean visit(WhileStatement node)

Visits the given type-specific AST node.

The default implementation does nothing and return true. Subclasses may reimplement.

Parameters:
  `node` - the node to visit
Returns:
  `true` if the children of this node should be visited, and `false` if the children of this node should be skipped

#### visit

    public boolean visit(WithStatement node)

#### visit

    public boolean visit(ObjectLiteral node)

#### visit

    public boolean visit(ObjectLiteralField node)

#### visit

    public boolean visit(FunctionExpression node)

#### visit

    public boolean visit(YieldExpression yieldExpression)

Visits the given type-specific AST node.

The default implementation does nothing and return true. Subclasses may reimplement.

Parameters:
  `node` - the node to visit
Returns:
  `true` if the children of this node should be visited, and `false` if the children of this node should be skipped

#### visit

    public boolean visit(ArrowFunctionExpression arrowFunctionExpression)

Visits the given type-specific AST node.

The default implementation does nothing and return true. Subclasses may reimplement.

Parameters:
  `node` - the node to visit
Returns:
  `true` if the children of this node should be visited, and `false` if the children of this node should be skipped

#### visit

    public boolean visit(DebuggerStatement debuggerStatement)

Visits the given type-specific AST node.

The default implementation does nothing and return true. Subclasses may reimplement.

Parameters:
  `node` - the node to visit
Returns:
  `true` if the children of this node should be visited, and `false` if the children of this node should be skipped

#### visit

    public boolean visit(ArrayName arrayName)

Visits the given type-specific AST node.

The default implementation does nothing and return true. Subclasses may reimplement.

Parameters:
  `node` - the node to visit
Returns:
  `true` if the children of this node should be visited, and `false` if the children of this node should be skipped

#### visit

    public boolean visit(ObjectName objectName)

Visits the given type-specific AST node.

The default implementation does nothing and return true. Subclasses may reimplement.

Parameters:
  `node` - the node to visit
Returns:
  `true` if the children of this node should be visited, and `false` if the children of this node should be skipped

#### visit

    public boolean visit(TemplateElement templateElement)

Visits the given type-specific AST node.

The default implementation does nothing and return true. Subclasses may reimplement.

Parameters:
  `node` - the node to visit
Returns:
  `true` if the children of this node should be visited, and `false` if the children of this node should be skipped

#### visit

    public boolean visit(TemplateLiteral templateLiteral)

Visits the given type-specific AST node.

The default implementation does nothing and return true. Subclasses may reimplement.

Parameters:
  `node` - the node to visit
Returns:
  `true` if the children of this node should be visited, and `false` if the children of this node should be skipped

#### visit

    public boolean visit(AssignmentName assignmentName)

Visits the given type-specific AST node.

The default implementation does nothing and return true. Subclasses may reimplement.

Parameters:
  `node` - the node to visit
Returns:
  `true` if the children of this node should be visited, and `false` if the children of this node should be skipped

#### visit

    public boolean visit(RestElementName restElementName)

Visits the given type-specific AST node.

The default implementation does nothing and return true. Subclasses may reimplement.

Parameters:
  `node` - the node to visit
Returns:
  `true` if the children of this node should be visited, and `false` if the children of this node should be skipped

#### visit

    public boolean visit(SpreadElement spreadElement)

Visits the given type-specific AST node.

The default implementation does nothing and return true. Subclasses may reimplement.

Parameters:
  `node` - the node to visit
Returns:
  `true` if the children of this node should be visited, and `false` if the children of this node should be skipped

#### visit

    public boolean visit(MetaProperty metaProperty)

Visits the given type-specific AST node.

The default implementation does nothing and return true. Subclasses may reimplement.

Parameters:
  `node` - the node to visit
Returns:
  `true` if the children of this node should be visited, and `false` if the children of this node should be skipped

#### visit

    public boolean visit(ModuleSpecifier moduleSpecifier)

Visits the given type-specific AST node.

The default implementation does nothing and return true. Subclasses may reimplement.

Parameters:
  `node` - the node to visit
Returns:
  `true` if the children of this node should be visited, and `false` if the children of this node should be skipped

#### visit

    public boolean visit(ExportDeclaration exportDeclaration)

Visits the given type-specific AST node.

The default implementation does nothing and return true. Subclasses may reimplement.

Parameters:
  `node` - the node to visit
Returns:
  `true` if the children of this node should be visited, and `false` if the children of this node should be skipped

#### visit

    public boolean visit(TypeDeclarationExpression typeDeclarationExpression)

Visits the given type-specific AST node.

The default implementation does nothing and return true. Subclasses may reimplement.

Parameters:
  `node` - the node to visit
Returns:
  `true` if the children of this node should be visited, and `false` if the children of this node should be skipped

#### visit

    public boolean visit(FunctionDeclarationStatement functionDeclarationStatement)

Visits the given type-specific AST node.

The default implementation does nothing and return true. Subclasses may reimplement.

Parameters:
  `node` - the node to visit
Returns:
  `true` if the children of this node should be visited, and `false` if the children of this node should be skipped

#### endVisit

    public void endVisit(AnonymousClassDeclaration node)

End of visit the given type-specific AST node.

The default implementation does nothing. Subclasses may reimplement.

Parameters:
  `node` - the node to visit

#### endVisit

    public void endVisit(ArrayAccess node)

End of visit the given type-specific AST node.

The default implementation does nothing. Subclasses may reimplement.

Parameters:
  `node` - the node to visit

#### endVisit

    public void endVisit(ArrayCreation node)

End of visit the given type-specific AST node.

The default implementation does nothing. Subclasses may reimplement.

Parameters:
  `node` - the node to visit

#### endVisit

    public void endVisit(ArrayInitializer node)

End of visit the given type-specific AST node.

The default implementation does nothing. Subclasses may reimplement.

Parameters:
  `node` - the node to visit

#### endVisit

    public void endVisit(ArrayType node)

End of visit the given type-specific AST node.

The default implementation does nothing. Subclasses may reimplement.

Parameters:
  `node` - the node to visit

#### endVisit

    public void endVisit(Assignment node)

End of visit the given type-specific AST node.

The default implementation does nothing. Subclasses may reimplement.

Parameters:
  `node` - the node to visit

#### endVisit

    public void endVisit(Block node)

End of visit the given type-specific AST node.

The default implementation does nothing. Subclasses may reimplement.

Parameters:
  `node` - the node to visit

#### endVisit

    public void endVisit(BlockComment node)

End of visit the given type-specific AST node.

The default implementation does nothing. Subclasses may reimplement.

Note: `LineComment` and `BlockComment` nodes are not considered part of main structure of the AST. This method will only be called if a client goes out of their way to visit this kind of node explicitly.

Parameters:
  `node` - the node to visit

#### endVisit

    public void endVisit(BooleanLiteral node)

End of visit the given type-specific AST node.

The default implementation does nothing. Subclasses may reimplement.

Parameters:
  `node` - the node to visit

#### endVisit

    public void endVisit(BreakStatement node)

End of visit the given type-specific AST node.

The default implementation does nothing. Subclasses may reimplement.

Parameters:
  `node` - the node to visit

#### endVisit

    public void endVisit(CatchClause node)

End of visit the given type-specific AST node.

The default implementation does nothing. Subclasses may reimplement.

Parameters:
  `node` - the node to visit

#### endVisit

    public void endVisit(CharacterLiteral node)

End of visit the given type-specific AST node.

The default implementation does nothing. Subclasses may reimplement.

Parameters:
  `node` - the node to visit

#### endVisit

    public void endVisit(RegularExpressionLiteral node)

#### endVisit

    public void endVisit(ClassInstanceCreation node)

End of visit the given type-specific AST node.

The default implementation does nothing. Subclasses may reimplement.

Parameters:
  `node` - the node to visit

#### endVisit

    public void endVisit(JavaScriptUnit node)

End of visit the given type-specific AST node.

The default implementation does nothing. Subclasses may reimplement.

Parameters:
  `node` - the node to visit

#### endVisit

    public void endVisit(ConditionalExpression node)

End of visit the given type-specific AST node.

The default implementation does nothing. Subclasses may reimplement.

Parameters:
  `node` - the node to visit

#### endVisit

    public void endVisit(ConstructorInvocation node)

End of visit the given type-specific AST node.

The default implementation does nothing. Subclasses may reimplement.

Parameters:
  `node` - the node to visit

#### endVisit

    public void endVisit(ContinueStatement node)

End of visit the given type-specific AST node.

The default implementation does nothing. Subclasses may reimplement.

Parameters:
  `node` - the node to visit

#### endVisit

    public void endVisit(DoStatement node)

End of visit the given type-specific AST node.

The default implementation does nothing. Subclasses may reimplement.

Parameters:
  `node` - the node to visit

#### endVisit

    public void endVisit(EmptyStatement node)

End of visit the given type-specific AST node.

The default implementation does nothing. Subclasses may reimplement.

Parameters:
  `node` - the node to visit

#### endVisit

    public void endVisit(EnhancedForStatement node)

End of visit the given type-specific AST node.

The default implementation does nothing. Subclasses may reimplement.

Parameters:
  `node` - the node to visit

#### endVisit

    public void endVisit(ExpressionStatement node)

End of visit the given type-specific AST node.

The default implementation does nothing. Subclasses may reimplement.

Parameters:
  `node` - the node to visit

#### endVisit

    public void endVisit(FieldAccess node)

End of visit the given type-specific AST node.

The default implementation does nothing. Subclasses may reimplement.

Parameters:
  `node` - the node to visit

#### endVisit

    public void endVisit(FieldDeclaration node)

End of visit the given type-specific AST node.

The default implementation does nothing. Subclasses may reimplement.

Parameters:
  `node` - the node to visit

#### endVisit

    public void endVisit(ForStatement node)

End of visit the given type-specific AST node.

The default implementation does nothing. Subclasses may reimplement.

Parameters:
  `node` - the node to visit

#### endVisit

    public void endVisit(ForInStatement node)

#### endVisit

    public void endVisit(ForOfStatement forOfStatement)

End of visit the given type-specific AST node.

The default implementation does nothing. Subclasses may reimplement.

Parameters:
  `node` - the node to visit

#### endVisit

    public void endVisit(IfStatement node)

End of visit the given type-specific AST node.

The default implementation does nothing. Subclasses may reimplement.

Parameters:
  `node` - the node to visit

#### endVisit

    public void endVisit(ImportDeclaration node)

End of visit the given type-specific AST node.

The default implementation does nothing. Subclasses may reimplement.

Parameters:
  `node` - the node to visit

#### endVisit

    public void endVisit(InfixExpression node)

End of visit the given type-specific AST node.

The default implementation does nothing. Subclasses may reimplement.

Parameters:
  `node` - the node to visit

#### endVisit

    public void endVisit(InstanceofExpression node)

End of visit the given type-specific AST node.

The default implementation does nothing. Subclasses may reimplement.

Parameters:
  `node` - the node to visit

#### endVisit

    public void endVisit(InferredType node)

#### endVisit

    public void endVisit(Initializer node)

End of visit the given type-specific AST node.

The default implementation does nothing. Subclasses may reimplement.

Parameters:
  `node` - the node to visit

#### endVisit

    public void endVisit(JSdoc node)

End of visit the given type-specific AST node.

The default implementation does nothing. Subclasses may reimplement.

Parameters:
  `node` - the node to visit

#### endVisit

    public void endVisit(LabeledStatement node)

End of visit the given type-specific AST node.

The default implementation does nothing. Subclasses may reimplement.

Parameters:
  `node` - the node to visit

#### endVisit

    public void endVisit(LineComment node)

End of visit the given type-specific AST node.

The default implementation does nothing. Subclasses may reimplement.

Note: `LineComment` and `BlockComment` nodes are not considered part of main structure of the AST. This method will only be called if a client goes out of their way to visit this kind of node explicitly.

Parameters:
  `node` - the node to visit

#### endVisit

    public void endVisit(ListExpression node)

#### endVisit

    public void endVisit(MemberRef node)

End of visit the given type-specific AST node.

The default implementation does nothing. Subclasses may reimplement.

Parameters:
  `node` - the node to visit

#### endVisit

    public void endVisit(FunctionRef node)

End of visit the given type-specific AST node.

The default implementation does nothing. Subclasses may reimplement.

Parameters:
  `node` - the node to visit

#### endVisit

    public void endVisit(FunctionRefParameter node)

End of visit the given type-specific AST node.

The default implementation does nothing. Subclasses may reimplement.

Parameters:
  `node` - the node to visit

#### endVisit

    public void endVisit(FunctionDeclaration node)

End of visit the given type-specific AST node.

The default implementation does nothing. Subclasses may reimplement.

Parameters:
  `node` - the node to visit

#### endVisit

    public void endVisit(FunctionInvocation node)

End of visit the given type-specific AST node.

The default implementation does nothing. Subclasses may reimplement.

Parameters:
  `node` - the node to visit

#### endVisit

    public void endVisit(Modifier node)

End of visit the given type-specific AST node.

The default implementation does nothing. Subclasses may reimplement.

Parameters:
  `node` - the node to visit

#### endVisit

    public void endVisit(NullLiteral node)

End of visit the given type-specific AST node.

The default implementation does nothing. Subclasses may reimplement.

Parameters:
  `node` - the node to visit

#### endVisit

    public void endVisit(UndefinedLiteral node)

#### endVisit

    public void endVisit(NumberLiteral node)

End of visit the given type-specific AST node.

The default implementation does nothing. Subclasses may reimplement.

Parameters:
  `node` - the node to visit

#### endVisit

    public void endVisit(PackageDeclaration node)

End of visit the given type-specific AST node.

The default implementation does nothing. Subclasses may reimplement.

Parameters:
  `node` - the node to visit

#### endVisit

    public void endVisit(ParenthesizedExpression node)

End of visit the given type-specific AST node.

The default implementation does nothing. Subclasses may reimplement.

Parameters:
  `node` - the node to visit

#### endVisit

    public void endVisit(PostfixExpression node)

End of visit the given type-specific AST node.

The default implementation does nothing. Subclasses may reimplement.

Parameters:
  `node` - the node to visit

#### endVisit

    public void endVisit(PrefixExpression node)

End of visit the given type-specific AST node.

The default implementation does nothing. Subclasses may reimplement.

Parameters:
  `node` - the node to visit

#### endVisit

    public void endVisit(PrimitiveType node)

End of visit the given type-specific AST node.

The default implementation does nothing. Subclasses may reimplement.

Parameters:
  `node` - the node to visit

#### endVisit

    public void endVisit(QualifiedName node)

End of visit the given type-specific AST node.

The default implementation does nothing. Subclasses may reimplement.

Parameters:
  `node` - the node to visit

#### endVisit

    public void endVisit(QualifiedType node)

End of visit the given type-specific AST node.

The default implementation does nothing. Subclasses may reimplement.

Parameters:
  `node` - the node to visit

#### endVisit

    public void endVisit(ReturnStatement node)

End of visit the given type-specific AST node.

The default implementation does nothing. Subclasses may reimplement.

Parameters:
  `node` - the node to visit

#### endVisit

    public void endVisit(SimpleName node)

End of visit the given type-specific AST node.

The default implementation does nothing. Subclasses may reimplement.

Parameters:
  `node` - the node to visit

#### endVisit

    public void endVisit(SimpleType node)

End of visit the given type-specific AST node.

The default implementation does nothing. Subclasses may reimplement.

Parameters:
  `node` - the node to visit

#### endVisit

    public void endVisit(SingleVariableDeclaration node)

End of visit the given type-specific AST node.

The default implementation does nothing. Subclasses may reimplement.

Parameters:
  `node` - the node to visit

#### endVisit

    public void endVisit(StringLiteral node)

End of visit the given type-specific AST node.

The default implementation does nothing. Subclasses may reimplement.

Parameters:
  `node` - the node to visit

#### endVisit

    public void endVisit(SuperConstructorInvocation node)

End of visit the given type-specific AST node.

The default implementation does nothing. Subclasses may reimplement.

Parameters:
  `node` - the node to visit

#### endVisit

    public void endVisit(SuperFieldAccess node)

End of visit the given type-specific AST node.

The default implementation does nothing. Subclasses may reimplement.

Parameters:
  `node` - the node to visit

#### endVisit

    public void endVisit(SuperMethodInvocation node)

End of visit the given type-specific AST node.

The default implementation does nothing. Subclasses may reimplement.

Parameters:
  `node` - the node to visit

#### endVisit

    public void endVisit(SwitchCase node)

End of visit the given type-specific AST node.

The default implementation does nothing. Subclasses may reimplement.

Parameters:
  `node` - the node to visit

#### endVisit

    public void endVisit(SwitchStatement node)

End of visit the given type-specific AST node.

The default implementation does nothing. Subclasses may reimplement.

Parameters:
  `node` - the node to visit

#### endVisit

    public void endVisit(TagElement node)

End of visit the given type-specific AST node.

The default implementation does nothing. Subclasses may reimplement.

Parameters:
  `node` - the node to visit

#### endVisit

    public void endVisit(TextElement node)

End of visit the given type-specific AST node.

The default implementation does nothing. Subclasses may reimplement.

Parameters:
  `node` - the node to visit

#### endVisit

    public void endVisit(ThisExpression node)

End of visit the given type-specific AST node.

The default implementation does nothing. Subclasses may reimplement.

Parameters:
  `node` - the node to visit

#### endVisit

    public void endVisit(ThrowStatement node)

End of visit the given type-specific AST node.

The default implementation does nothing. Subclasses may reimplement.

Parameters:
  `node` - the node to visit

#### endVisit

    public void endVisit(TryStatement node)

End of visit the given type-specific AST node.

The default implementation does nothing. Subclasses may reimplement.

Parameters:
  `node` - the node to visit

#### endVisit

    public void endVisit(TypeDeclaration node)

End of visit the given type-specific AST node.

The default implementation does nothing. Subclasses may reimplement.

Parameters:
  `node` - the node to visit

#### endVisit

    public void endVisit(TypeDeclarationStatement node)

End of visit the given type-specific AST node.

The default implementation does nothing. Subclasses may reimplement.

Parameters:
  `node` - the node to visit

#### endVisit

    public void endVisit(TypeLiteral node)

End of visit the given type-specific AST node.

The default implementation does nothing. Subclasses may reimplement.

Parameters:
  `node` - the node to visit

#### endVisit

    public void endVisit(VariableDeclarationExpression node)

End of visit the given type-specific AST node.

The default implementation does nothing. Subclasses may reimplement.

Parameters:
  `node` - the node to visit

#### endVisit

    public void endVisit(VariableDeclarationStatement node)

End of visit the given type-specific AST node.

The default implementation does nothing. Subclasses may reimplement.

Parameters:
  `node` - the node to visit

#### endVisit

    public void endVisit(VariableDeclarationFragment node)

End of visit the given type-specific AST node.

The default implementation does nothing. Subclasses may reimplement.

Parameters:
  `node` - the node to visit

#### endVisit

    public void endVisit(WhileStatement node)

End of visit the given type-specific AST node.

The default implementation does nothing. Subclasses may reimplement.

Parameters:
  `node` - the node to visit

#### endVisit

    public void endVisit(WithStatement node)

#### endVisit

    public void endVisit(ObjectLiteral node)

#### endVisit

    public void endVisit(ObjectLiteralField node)

#### endVisit

    public void endVisit(FunctionExpression node)

#### endVisit

    public void endVisit(YieldExpression yieldExpression)

End of visit the given type-specific AST node.

The default implementation does nothing. Subclasses may reimplement.

Parameters:
  `node` - the node to visit

#### endVisit

    public void endVisit(ArrowFunctionExpression arrowFunctionExpression)

End of visit the given type-specific AST node.

The default implementation does nothing. Subclasses may reimplement.

Parameters:
  `node` - the node to visit

#### endVisit

    public void endVisit(DebuggerStatement debuggerStatement)

End of visit the given type-specific AST node.

The default implementation does nothing. Subclasses may reimplement.

Parameters:
  `node` - the node to visit

#### endVisit

    public void endVisit(ArrayName arrayName)

End of visit the given type-specific AST node.

The default implementation does nothing. Subclasses may reimplement.

Parameters:
  `node` - the node to visit

#### endVisit

    public void endVisit(ObjectName objectName)

End of visit the given type-specific AST node.

The default implementation does nothing. Subclasses may reimplement.

Parameters:
  `node` - the node to visit

#### endVisit

    public void endVisit(TemplateElement templateElement)

End of visit the given type-specific AST node.

The default implementation does nothing. Subclasses may reimplement.

Parameters:
  `node` - the node to visit

#### endVisit

    public void endVisit(TemplateLiteral templateLiteral)

End of visit the given type-specific AST node.

The default implementation does nothing. Subclasses may reimplement.

Parameters:
  `node` - the node to visit

#### endVisit

    public void endVisit(AssignmentName assignmentName)

End of visit the given type-specific AST node.

The default implementation does nothing. Subclasses may reimplement.

Parameters:
  `node` - the node to visit

#### endVisit

    public void endVisit(RestElementName restElementName)

End of visit the given type-specific AST node.

The default implementation does nothing. Subclasses may reimplement.

Parameters:
  `node` - the node to visit

#### endVisit

    public void endVisit(SpreadElement spreadElement)

End of visit the given type-specific AST node.

The default implementation does nothing. Subclasses may reimplement.

Parameters:
  `node` - the node to visit

#### endVisit

    public void endVisit(MetaProperty metaProperty)

End of visit the given type-specific AST node.

The default implementation does nothing. Subclasses may reimplement.

Parameters:
  `node` - the node to visit

#### endVisit

    public void endVisit(ModuleSpecifier moduleSpecifier)

End of visit the given type-specific AST node.

The default implementation does nothing. Subclasses may reimplement.

Parameters:
  `node` - the node to visit

#### endVisit

    public void endVisit(ExportDeclaration exportDeclaration)

Parameters:
  `exportDeclaration` -

#### endVisit

    public void endVisit(TypeDeclarationExpression typeDeclarationExpression)

Parameters:
  `typeDeclarationExpression` -

#### endVisit

    public void endVisit(FunctionDeclarationStatement functionDeclarationStatement)

Parameters:
  `functionDeclarationStatement` -