Module jdk.compiler
Package com.sun.source.tree

# Interface TreeVisitor<R,​P>

Type Parameters:
  `R` - the return type of this visitor's methods. Use `Void` for visitors that do not need to return results.
  `P` - the type of the additional parameter to this visitor's methods. Use `Void` for visitors that do not need an additional parameter.

All Known Implementing Classes:
  `SimpleTreeVisitor`, `TreePathScanner`, `TreeScanner`

    public interface TreeVisitor<R,​P>

A visitor of trees, in the style of the visitor design pattern. Classes implementing this interface are used to operate on a tree when the kind of tree is unknown at compile time. When a visitor is passed to an tree's `accept` method, the `visitXyz` method most applicable to that tree is invoked.

Classes implementing this interface may or may not throw a `NullPointerException` if the additional parameter `p` is `null`; see documentation of the implementing class for details.

WARNING: It is possible that methods will be added to this interface to accommodate new, currently unknown, language structures added to future versions of the Java™ programming language. Therefore, visitor classes directly implementing this interface may be source incompatible with future versions of the platform.

Since:
  1.6

## Method Summary

Modifier and Type | Method | Description
--- | --- | ---
`R` | `visitAnnotatedType​(AnnotatedTypeTree node, P p)` | Visits an AnnotatedTypeTree node.
`R` | `visitAnnotation​(AnnotationTree node, P p)` | Visits an AnnotatedTree node.
`R` | `visitArrayAccess​(ArrayAccessTree node, P p)` | Visits an ArrayAccessTree node.
`R` | `visitArrayType​(ArrayTypeTree node, P p)` | Visits an ArrayTypeTree node.
`R` | `visitAssert​(AssertTree node, P p)` | Visits an AssertTree node.
`R` | `visitAssignment​(AssignmentTree node, P p)` | Visits an AssignmentTree node.
`R` | `visitBinary​(BinaryTree node, P p)` | Visits a BinaryTree node.
`R` | `visitBlock​(BlockTree node, P p)` | Visits a BlockTree node.
`R` | `visitBreak​(BreakTree node, P p)` | Visits a BreakTree node.
`R` | `visitCase​(CaseTree node, P p)` | Visits a CaseTree node.
`R` | `visitCatch​(CatchTree node, P p)` | Visits a CatchTree node.
`R` | `visitClass​(ClassTree node, P p)` | Visits a ClassTree node.
`R` | `visitCompilationUnit​(CompilationUnitTree node, P p)` | Visits a CompilationUnitTree node.
`R` | `visitCompoundAssignment​(CompoundAssignmentTree node, P p)` | Visits a CompoundAssignmentTree node.
`R` | `visitConditionalExpression​(ConditionalExpressionTree node, P p)` | Visits a ConditionalExpressionTree node.
`R` | `visitContinue​(ContinueTree node, P p)` | Visits a ContinueTree node.
`R` | `visitDoWhileLoop​(DoWhileLoopTree node, P p)` | Visits a DoWhileTree node.
`R` | `visitEmptyStatement​(EmptyStatementTree node, P p)` | Visits an EmptyStatementTree node.
`R` | `visitEnhancedForLoop​(EnhancedForLoopTree node, P p)` | Visits an EnhancedForLoopTree node.
`R` | `visitErroneous​(ErroneousTree node, P p)` | Visits an ErroneousTree node.
`R` | `visitExports​(ExportsTree node, P p)` | Visits an ExportsTree node.
`R` | `visitExpressionStatement​(ExpressionStatementTree node, P p)` | Visits an ExpressionStatementTree node.
`R` | `visitForLoop​(ForLoopTree node, P p)` | Visits a ForLoopTree node.
`R` | `visitIdentifier​(IdentifierTree node, P p)` | Visits an IdentifierTree node.
`R` | `visitIf​(IfTree node, P p)` | Visits an IfTree node.
`R` | `visitImport​(ImportTree node, P p)` | Visits an ImportTree node.
`R` | `visitInstanceOf​(InstanceOfTree node, P p)` | Visits an InstanceOfTree node.
`R` | `visitIntersectionType​(IntersectionTypeTree node, P p)` | Visits an IntersectionTypeTree node.
`R` | `visitLabeledStatement​(LabeledStatementTree node, P p)` | Visits a LabeledStatementTree node.
`R` | `visitLambdaExpression​(LambdaExpressionTree node, P p)` | Visits a LambdaExpressionTree node.
`R` | `visitLiteral​(LiteralTree node, P p)` | Visits a LiteralTree node.
`R` | `visitMemberReference​(MemberReferenceTree node, P p)` | Visits a MemberReferenceTree node.
`R` | `visitMemberSelect​(MemberSelectTree node, P p)` | Visits a MemberSelectTree node.
`R` | `visitMethod​(MethodTree node, P p)` | Visits a MethodTree node.
`R` | `visitMethodInvocation​(MethodInvocationTree node, P p)` | Visits a MethodInvocationTree node.
`R` | `visitModifiers​(ModifiersTree node, P p)` | Visits a ModifiersTree node.
`R` | `visitModule​(ModuleTree node, P p)` | Visits a ModuleTree node.
`R` | `visitNewArray​(NewArrayTree node, P p)` | Visits a NewArrayTree node.
`R` | `visitNewClass​(NewClassTree node, P p)` | Visits a NewClassTree node.
`R` | `visitOpens​(OpensTree node, P p)` | Visits an OpensTree node.
`R` | `visitOther​(Tree node, P p)` | Visits an unknown type of Tree node.
`R` | `visitPackage​(PackageTree node, P p)` | Visits a PackageTree node.
`R` | `visitParameterizedType​(ParameterizedTypeTree node, P p)` | Visits a ParameterizedTypeTree node.
`R` | `visitParenthesized​(ParenthesizedTree node, P p)` | Visits a ParenthesizedTree node.
`R` | `visitPrimitiveType​(PrimitiveTypeTree node, P p)` | Visits a PrimitiveTypeTree node.
`R` | `visitProvides​(ProvidesTree node, P p)` | Visits a ProvidesTree node.
`R` | `visitRequires​(RequiresTree node, P p)` | Visits a RequiresTree node.
`R` | `visitReturn​(ReturnTree node, P p)` | Visits a ReturnTree node.
`R` | `visitSwitch​(SwitchTree node, P p)` | Visits a SwitchTree node.
`R` | `visitSwitchExpression​(SwitchExpressionTree node, P p)` | Deprecated, for removal: This API element is subject to removal in a future version. This method is modeling switch expressions, which are part of a preview feature and may be removed if the preview feature is removed.
`R` | `visitSynchronized​(SynchronizedTree node, P p)` | Visits a SynchronizedTree node.
`R` | `visitThrow​(ThrowTree node, P p)` | Visits a ThrowTree node.
`R` | `visitTry​(TryTree node, P p)` | Visits a TryTree node.
`R` | `visitTypeCast​(TypeCastTree node, P p)` | Visits a TypeCastTree node.
`R` | `visitTypeParameter​(TypeParameterTree node, P p)` | Visits a TypeParameterTree node.
`R` | `visitUnary​(UnaryTree node, P p)` | Visits a UnaryTree node.
`R` | `visitUnionType​(UnionTypeTree node, P p)` | Visits a UnionTypeTree node.
`R` | `visitUses​(UsesTree node, P p)` | Visits a UsesTree node.
`R` | `visitVariable​(VariableTree node, P p)` | Visits a VariableTree node.
`R` | `visitWhileLoop​(WhileLoopTree node, P p)` | Visits a WhileLoopTree node.
`R` | `visitWildcard​(WildcardTree node, P p)` | Visits a WildcardTypeTree node.
`R` | `visitYield​(YieldTree node, P p)` | Deprecated, for removal: This API element is subject to removal in a future version. This method is modeling yield statement, which are part of a preview feature and may be removed if the preview feature is removed.

## Method Details

### visitAnnotatedType

R visitAnnotatedType​(AnnotatedTypeTree node, P p)
Visits an AnnotatedTypeTree node.

Parameters:
  `node` - the node being visited
  `p` - a parameter value
Returns:
  a result value

### visitAnnotation

R visitAnnotation​(AnnotationTree node, P p)
Visits an AnnotatedTree node.

Parameters:
  `node` - the node being visited
  `p` - a parameter value
Returns:
  a result value

### visitMethodInvocation

R visitMethodInvocation​(MethodInvocationTree node, P p)
Visits a MethodInvocationTree node.

Parameters:
  `node` - the node being visited
  `p` - a parameter value
Returns:
  a result value

### visitAssert

R visitAssert​(AssertTree node, P p)
Visits an AssertTree node.

Parameters:
  `node` - the node being visited
  `p` - a parameter value
Returns:
  a result value

### visitAssignment

R visitAssignment​(AssignmentTree node, P p)
Visits an AssignmentTree node.

Parameters:
  `node` - the node being visited
  `p` - a parameter value
Returns:
  a result value

### visitCompoundAssignment

R visitCompoundAssignment​(CompoundAssignmentTree node, P p)
Visits a CompoundAssignmentTree node.

Parameters:
  `node` - the node being visited
  `p` - a parameter value
Returns:
  a result value

### visitBinary

R visitBinary​(BinaryTree node, P p)
Visits a BinaryTree node.

Parameters:
  `node` - the node being visited
  `p` - a parameter value
Returns:
  a result value

### visitBlock

R visitBlock​(BlockTree node, P p)
Visits a BlockTree node.

Parameters:
  `node` - the node being visited
  `p` - a parameter value
Returns:
  a result value

### visitBreak

R visitBreak​(BreakTree node, P p)
Visits a BreakTree node.

Parameters:
  `node` - the node being visited
  `p` - a parameter value
Returns:
  a result value

### visitCase

R visitCase​(CaseTree node, P p)
Visits a CaseTree node.

Parameters:
  `node` - the node being visited
  `p` - a parameter value
Returns:
  a result value

### visitCatch

R visitCatch​(CatchTree node, P p)
Visits a CatchTree node.

Parameters:
  `node` - the node being visited
  `p` - a parameter value
Returns:
  a result value

### visitClass

R visitClass​(ClassTree node, P p)
Visits a ClassTree node.

Parameters:
  `node` - the node being visited
  `p` - a parameter value
Returns:
  a result value

### visitConditionalExpression

R visitConditionalExpression​(ConditionalExpressionTree node, P p)
Visits a ConditionalExpressionTree node.

Parameters:
  `node` - the node being visited
  `p` - a parameter value
Returns:
  a result value

### visitContinue

R visitContinue​(ContinueTree node, P p)
Visits a ContinueTree node.

Parameters:
  `node` - the node being visited
  `p` - a parameter value
Returns:
  a result value

### visitDoWhileLoop

R visitDoWhileLoop​(DoWhileLoopTree node, P p)
Visits a DoWhileTree node.

Parameters:
  `node` - the node being visited
  `p` - a parameter value
Returns:
  a result value

### visitErroneous

R visitErroneous​(ErroneousTree node, P p)
Visits an ErroneousTree node.

Parameters:
  `node` - the node being visited
  `p` - a parameter value
Returns:
  a result value

### visitExpressionStatement

R visitExpressionStatement​(ExpressionStatementTree node, P p)
Visits an ExpressionStatementTree node.

Parameters:
  `node` - the node being visited
  `p` - a parameter value
Returns:
  a result value

### visitEnhancedForLoop

R visitEnhancedForLoop​(EnhancedForLoopTree node, P p)
Visits an EnhancedForLoopTree node.

Parameters:
  `node` - the node being visited
  `p` - a parameter value
Returns:
  a result value

### visitForLoop

R visitForLoop​(ForLoopTree node, P p)
Visits a ForLoopTree node.

Parameters:
  `node` - the node being visited
  `p` - a parameter value
Returns:
  a result value

### visitIdentifier

R visitIdentifier​(IdentifierTree node, P p)
Visits an IdentifierTree node.

Parameters:
  `node` - the node being visited
  `p` - a parameter value
Returns:
  a result value

### visitIf

R visitIf​(IfTree node, P p)
Visits an IfTree node.

Parameters:
  `node` - the node being visited
  `p` - a parameter value
Returns:
  a result value

### visitImport

R visitImport​(ImportTree node, P p)
Visits an ImportTree node.

Parameters:
  `node` - the node being visited
  `p` - a parameter value
Returns:
  a result value

### visitArrayAccess

R visitArrayAccess​(ArrayAccessTree node, P p)
Visits an ArrayAccessTree node.

Parameters:
  `node` - the node being visited
  `p` - a parameter value
Returns:
  a result value

### visitLabeledStatement

R visitLabeledStatement​(LabeledStatementTree node, P p)
Visits a LabeledStatementTree node.

Parameters:
  `node` - the node being visited
  `p` - a parameter value
Returns:
  a result value

### visitLiteral

R visitLiteral​(LiteralTree node, P p)
Visits a LiteralTree node.

Parameters:
  `node` - the node being visited
  `p` - a parameter value
Returns:
  a result value

### visitMethod

R visitMethod​(MethodTree node, P p)
Visits a MethodTree node.

Parameters:
  `node` - the node being visited
  `p` - a parameter value
Returns:
  a result value

### visitModifiers

R visitModifiers​(ModifiersTree node, P p)
Visits a ModifiersTree node.

Parameters:
  `node` - the node being visited
  `p` - a parameter value
Returns:
  a result value

### visitNewArray

R visitNewArray​(NewArrayTree node, P p)
Visits a NewArrayTree node.

Parameters:
  `node` - the node being visited
  `p` - a parameter value
Returns:
  a result value

### visitNewClass

R visitNewClass​(NewClassTree node, P p)
Visits a NewClassTree node.

Parameters:
  `node` - the node being visited
  `p` - a parameter value
Returns:
  a result value

### visitLambdaExpression

R visitLambdaExpression​(LambdaExpressionTree node, P p)
Visits a LambdaExpressionTree node.

Parameters:
  `node` - the node being visited
  `p` - a parameter value
Returns:
  a result value

### visitPackage

R visitPackage​(PackageTree node, P p)
Visits a PackageTree node.

Parameters:
  `node` - the node being visited
  `p` - a parameter value
Returns:
  a result value

### visitParenthesized

R visitParenthesized​(ParenthesizedTree node, P p)
Visits a ParenthesizedTree node.

Parameters:
  `node` - the node being visited
  `p` - a parameter value
Returns:
  a result value

### visitReturn

R visitReturn​(ReturnTree node, P p)
Visits a ReturnTree node.

Parameters:
  `node` - the node being visited
  `p` - a parameter value
Returns:
  a result value

### visitMemberSelect

R visitMemberSelect​(MemberSelectTree node, P p)
Visits a MemberSelectTree node.

Parameters:
  `node` - the node being visited
  `p` - a parameter value
Returns:
  a result value

### visitMemberReference

R visitMemberReference​(MemberReferenceTree node, P p)
Visits a MemberReferenceTree node.

Parameters:
  `node` - the node being visited
  `p` - a parameter value
Returns:
  a result value

### visitEmptyStatement

R visitEmptyStatement​(EmptyStatementTree node, P p)
Visits an EmptyStatementTree node.

Parameters:
  `node` - the node being visited
  `p` - a parameter value
Returns:
  a result value

### visitSwitch

R visitSwitch​(SwitchTree node, P p)
Visits a SwitchTree node.

Parameters:
  `node` - the node being visited
  `p` - a parameter value
Returns:
  a result value

### visitSwitchExpression

@Deprecated(forRemoval=true, since="12") R visitSwitchExpression​(SwitchExpressionTree node, P p)
Deprecated, for removal: This API element is subject to removal in a future version.
This method is modeling switch expressions, which are part of a preview feature and may be removed if the preview feature is removed.
Visits a SwitchExpressionTree node.

Parameters:
  `node` - the node being visited
  `p` - a parameter value
Returns:
  a result value
Since:
  12

### visitSynchronized

R visitSynchronized​(SynchronizedTree node, P p)
Visits a SynchronizedTree node.

Parameters:
  `node` - the node being visited
  `p` - a parameter value
Returns:
  a result value

### visitThrow

R visitThrow​(ThrowTree node, P p)
Visits a ThrowTree node.

Parameters:
  `node` - the node being visited
  `p` - a parameter value
Returns:
  a result value

### visitCompilationUnit

R visitCompilationUnit​(CompilationUnitTree node, P p)
Visits a CompilationUnitTree node.

Parameters:
  `node` - the node being visited
  `p` - a parameter value
Returns:
  a result value

### visitTry

R visitTry​(TryTree node, P p)
Visits a TryTree node.

Parameters:
  `node` - the node being visited
  `p` - a parameter value
Returns:
  a result value

### visitParameterizedType

R visitParameterizedType​(ParameterizedTypeTree node, P p)
Visits a ParameterizedTypeTree node.

Parameters:
  `node` - the node being visited
  `p` - a parameter value
Returns:
  a result value

### visitUnionType

R visitUnionType​(UnionTypeTree node, P p)
Visits a UnionTypeTree node.

Parameters:
  `node` - the node being visited
  `p` - a parameter value
Returns:
  a result value

### visitIntersectionType

R visitIntersectionType​(IntersectionTypeTree node, P p)
Visits an IntersectionTypeTree node.

Parameters:
  `node` - the node being visited
  `p` - a parameter value
Returns:
  a result value

### visitArrayType

R visitArrayType​(ArrayTypeTree node, P p)
Visits an ArrayTypeTree node.

Parameters:
  `node` - the node being visited
  `p` - a parameter value
Returns:
  a result value

### visitTypeCast

R visitTypeCast​(TypeCastTree node, P p)
Visits a TypeCastTree node.

Parameters:
  `node` - the node being visited
  `p` - a parameter value
Returns:
  a result value

### visitPrimitiveType

R visitPrimitiveType​(PrimitiveTypeTree node, P p)
Visits a PrimitiveTypeTree node.

Parameters:
  `node` - the node being visited
  `p` - a parameter value
Returns:
  a result value

### visitTypeParameter

R visitTypeParameter​(TypeParameterTree node, P p)
Visits a TypeParameterTree node.

Parameters:
  `node` - the node being visited
  `p` - a parameter value
Returns:
  a result value

### visitInstanceOf

R visitInstanceOf​(InstanceOfTree node, P p)
Visits an InstanceOfTree node.

Parameters:
  `node` - the node being visited
  `p` - a parameter value
Returns:
  a result value

### visitUnary

R visitUnary​(UnaryTree node, P p)
Visits a UnaryTree node.

Parameters:
  `node` - the node being visited
  `p` - a parameter value
Returns:
  a result value

### visitVariable

R visitVariable​(VariableTree node, P p)
Visits a VariableTree node.

Parameters:
  `node` - the node being visited
  `p` - a parameter value
Returns:
  a result value

### visitWhileLoop

R visitWhileLoop​(WhileLoopTree node, P p)
Visits a WhileLoopTree node.

Parameters:
  `node` - the node being visited
  `p` - a parameter value
Returns:
  a result value

### visitWildcard

R visitWildcard​(WildcardTree node, P p)
Visits a WildcardTypeTree node.

Parameters:
  `node` - the node being visited
  `p` - a parameter value
Returns:
  a result value

### visitModule

R visitModule​(ModuleTree node, P p)
Visits a ModuleTree node.

Parameters:
  `node` - the node being visited
  `p` - a parameter value
Returns:
  a result value

### visitExports

R visitExports​(ExportsTree node, P p)
Visits an ExportsTree node.

Parameters:
  `node` - the node being visited
  `p` - a parameter value
Returns:
  a result value

### visitOpens

R visitOpens​(OpensTree node, P p)
Visits an OpensTree node.

Parameters:
  `node` - the node being visited
  `p` - a parameter value
Returns:
  a result value

### visitProvides

R visitProvides​(ProvidesTree node, P p)
Visits a ProvidesTree node.

Parameters:
  `node` - the node being visited
  `p` - a parameter value
Returns:
  a result value

### visitRequires

R visitRequires​(RequiresTree node, P p)
Visits a RequiresTree node.

Parameters:
  `node` - the node being visited
  `p` - a parameter value
Returns:
  a result value

### visitUses

R visitUses​(UsesTree node, P p)
Visits a UsesTree node.

Parameters:
  `node` - the node being visited
  `p` - a parameter value
Returns:
  a result value

### visitOther

R visitOther​(Tree node, P p)
Visits an unknown type of Tree node. This can occur if the language evolves and new kinds of nodes are added to the `Tree` hierarchy.

Parameters:
  `node` - the node being visited
  `p` - a parameter value
Returns:
  a result value

### visitYield

@Deprecated(forRemoval=true, since="13") R visitYield​(YieldTree node, P p)
Deprecated, for removal: This API element is subject to removal in a future version.
This method is modeling yield statement, which are part of a preview feature and may be removed if the preview feature is removed.
Visits a YieldTree node.

Parameters:
  `node` - the node being visited
  `p` - a parameter value
Returns:
  a result value
Since:
  13