# Package com.sun.source.tree

package com.sun.source.tree
Provides interfaces to represent source code as abstract syntax trees (AST).

Since:
  1.6

- Class
  Description
  AnnotatedTypeTree
  A tree node for an annotated type.
  AnnotationTree
  A tree node for an annotation.
  AnyPatternTree
  A tree node for a binding pattern that matches a pattern with a variable of any name and a type of the match candidate; an unnamed pattern.
  ArrayAccessTree
  A tree node for an array access expression.
  ArrayTypeTree
  A tree node for an array type.
  AssertTree
  A tree node for an `assert` statement.
  AssignmentTree
  A tree node for an assignment expression.
  BinaryTree
  A tree node for a binary expression.
  BindingPatternTree
  A binding pattern tree
  BlockTree
  A tree node for a statement block.
  BreakTree
  A tree node for a `break` statement.
  CaseLabelTree
  A marker interface for `Tree`s that may be used as `CaseTree` labels.
  CaseTree
  A tree node for a `case` in a `switch` statement or expression.
  CaseTree.CaseKind
  The syntactic form of this case: STATEMENT: `case <expression>: <statements>` RULE: `case <expression> -> <expression>/<statement>`
  CatchTree
  A tree node for a `catch` block in a `try` statement.
  ClassTree
  A tree node for a class, interface, enum, record, or annotation type declaration.
  CompilationUnitTree
  Represents the abstract syntax tree for ordinary compilation units and modular compilation units.
  CompoundAssignmentTree
  A tree node for compound assignment operator.
  ConditionalExpressionTree
  A tree node for the conditional operator `? :`.
  ConstantCaseLabelTree
  A case label element that refers to a constant expression
  ContinueTree
  A tree node for a `continue` statement.
  DeconstructionPatternTree
  A deconstruction pattern tree.
  DefaultCaseLabelTree
  A case label that marks `default` in `case null, default`.
  DirectiveTree
  A super-type for all the directives in a ModuleTree.
  DoWhileLoopTree
  A tree node for a `do` statement.
  EmptyStatementTree
  A tree node for an empty (skip) statement.
  EnhancedForLoopTree
  A tree node for an "enhanced" `for` loop statement.
  ErroneousTree
  A tree node to stand in for a malformed expression.
  ExportsTree
  A tree node for an 'exports' directive in a module declaration.
  ExpressionStatementTree
  A tree node for an expression statement.
  ExpressionTree
  A tree node used as the base class for the different types of expressions.
  ForLoopTree
  A tree node for a basic `for` loop statement.
  IdentifierTree
  A tree node for an identifier expression.
  IfTree
  A tree node for an `if` statement.
  ImportTree
  A tree node for an import declaration.
  InstanceOfTree
  A tree node for an `instanceof` expression.
  IntersectionTypeTree
  A tree node for an intersection type in a cast expression.
  LabeledStatementTree
  A tree node for a labeled statement.
  LambdaExpressionTree
  A tree node for a lambda expression.
  LambdaExpressionTree.BodyKind
  Lambda expressions come in two forms: expression lambdas, whose body is an expression, and statement lambdas, whose body is a block
  LineMap
  Provides methods to convert between character positions and line numbers for a compilation unit.
  LiteralTree
  A tree node for a literal expression.
  MemberReferenceTree
  A tree node for a member reference expression.
  MemberReferenceTree.ReferenceMode
  There are two kinds of member references: (i) method references and (ii) constructor references
  MemberSelectTree
  A tree node for a member access expression.
  MethodInvocationTree
  A tree node for a method invocation expression.
  MethodTree
  A tree node for a method or annotation type element declaration.
  ModifiersTree
  A tree node for the modifiers, including annotations, for a declaration.
  ModuleTree
  A tree node for a module declaration.
  ModuleTree.ModuleKind
  The kind of the module.
  NewArrayTree
  A tree node for an expression to create a new instance of an array.
  NewClassTree
  A tree node to declare a new instance of a class.
  OpensTree
  A tree node for an 'opens' directive in a module declaration.
  PackageTree
  Represents the package declaration.
  ParameterizedTypeTree
  A tree node for a type expression involving type parameters.
  ParenthesizedTree
  A tree node for a parenthesized expression.
  PatternCaseLabelTree
  A case label element that refers to an expression
  PatternTree
  A tree node used as the base class for the different kinds of patterns.
  PrimitiveTypeTree
  A tree node for a primitive type.
  ProvidesTree
  A tree node for a 'provides' directive in a module declaration.
  RequiresTree
  A tree node for a 'requires' directive in a module declaration.
  ReturnTree
  A tree node for a `return` statement.
  Scope
  Interface for determining locally available program elements, such as local variables and imports.
  StatementTree
  A tree node used as the base class for the different kinds of statements.
  SwitchExpressionTree
  A tree node for a `switch` expression.
  SwitchTree
  A tree node for a `switch` statement.
  SynchronizedTree
  A tree node for a `synchronized` statement.
  ThrowTree
  A tree node for a `throw` statement.
  Tree
  Common interface for all nodes in an abstract syntax tree.
  Tree.Kind
  Enumerates all kinds of trees.
  TreeVisitor<R,P>
  A visitor of trees, in the style of the visitor design pattern.
  TryTree
  A tree node for a `try` statement.
  TypeCastTree
  A tree node for a type cast expression.
  TypeParameterTree
  A tree node for a type parameter.
  UnaryTree
  A tree node for postfix and unary expressions.
  UnionTypeTree
  A tree node for a union type expression in a multicatch variable declaration.
  UsesTree
  A tree node for a 'uses' directive in a module declaration.
  VariableTree
  A tree node for a variable declaration.
  WhileLoopTree
  A tree node for a `while` loop statement.
  WildcardTree
  A tree node for a wildcard type argument.
  YieldTree
  A tree node for a `yield` statement.