# Interface Tree

All Known Subinterfaces:
  `AnnotatedTypeTree, AnnotationTree, AnyPatternTree, ArrayAccessTree, ArrayTypeTree, AssertTree, AssignmentTree, BinaryTree, BindingPatternTree, BlockTree, BreakTree, CaseLabelTree, CaseTree, CatchTree, ClassTree, CompilationUnitTree, CompoundAssignmentTree, ConditionalExpressionTree, ConstantCaseLabelTree, ContinueTree, DeconstructionPatternTree, DefaultCaseLabelTree, DirectiveTree, DoWhileLoopTree, EmptyStatementTree, EnhancedForLoopTree, ErroneousTree, ExportsTree, ExpressionStatementTree, ExpressionTree, ForLoopTree, IdentifierTree, IfTree, ImportTree, InstanceOfTree, IntersectionTypeTree, LabeledStatementTree, LambdaExpressionTree, LiteralTree, MemberReferenceTree, MemberSelectTree, MethodInvocationTree, MethodTree, ModifiersTree, ModuleTree, NewArrayTree, NewClassTree, OpensTree, PackageTree, ParameterizedTypeTree, ParenthesizedTree, PatternCaseLabelTree, PatternTree, PrimitiveTypeTree, ProvidesTree, RequiresTree, ReturnTree, StatementTree, SwitchExpressionTree, SwitchTree, SynchronizedTree, ThrowTree, TryTree, TypeCastTree, TypeParameterTree, UnaryTree, UnionTypeTree, UsesTree, VariableTree, VarTypeTree, WhileLoopTree, WildcardTree, YieldTree`

public interface Tree
Common interface for all nodes in an abstract syntax tree.

WARNING: This interface and its sub-interfaces are subject to change as the Java programming language evolves. These interfaces are implemented by the JDK Java compiler (javac) and should not be implemented either directly or indirectly by other applications.

Since:
  1.6

## Nested Class Summary

Nested Classes
Modifier and Type
Interface
Description
`static enum`
`Tree.Kind`
Enumerates all kinds of trees.

## Method Summary

Modifier and Type
Method
Description
`<R,D> R`
`accept(TreeVisitor<R,D> visitor, D data)`
Accept method used to implement the visitor pattern.
`Tree.Kind`
`getKind()`
Returns the kind of this tree.

## Method Details

### getKind

Tree.Kind getKind()
Returns the kind of this tree.

Returns:
  the kind of this tree

### accept

<R,D> R accept(TreeVisitor<R,D> visitor, D data)
Accept method used to implement the visitor pattern. The visitor pattern is used to implement operations on trees.

Type Parameters:
  `R` - the result type of this operation
  `D` - the type of additional data
Parameters:
  `visitor` - the visitor to be called
  `data` - a value to be passed to the visitor
Returns:
  the result returned from calling the visitor