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.

- - ### Method Detail

    - #### 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