# Class Trees

java.lang.Object
com.sun.source.util.Trees

Direct Known Subclasses:
  `DocTrees`

public abstract class Trees extends Object
Bridges JSR 199, JSR 269, and the Tree API.

Since:
  1.6

- ## Constructor Summary

  Constructors
  Constructor
  Description
  `Trees()`
  Constructor for subclasses to call.

- ## Method Summary

  Modifier and Type
  Method
  Description
  `abstract String`
  `getDocComment(TreePath path)`
  Returns the doc comment, if any, for the `Tree` node identified by a given `TreePath`.
  `abstract Element`
  `getElement(TreePath path)`
  Returns the `Element` for the `Tree` node identified by a given `TreePath`.
  `abstract TypeMirror`
  `getLub(CatchTree tree)`
  Returns the lub of an exception parameter declared in a catch clause.
  `abstract TypeMirror`
  `getOriginalType(ErrorType errorType)`
  Returns the original type from the `ErrorType` object.
  `abstract TreePath`
  `getPath(CompilationUnitTree unit, Tree node)`
  Returns the path to tree node within the specified compilation unit.
  `abstract TreePath`
  `getPath(Element e)`
  Returns the `TreePath` node for a given `Element`.
  `abstract TreePath`
  `getPath(Element e, AnnotationMirror a)`
  Returns the `TreePath` node for an `AnnotationMirror` on a given `Element`.
  `abstract TreePath`
  `getPath(Element e, AnnotationMirror a, AnnotationValue v)`
  Returns the `TreePath` node for an `AnnotationValue` for an `AnnotationMirror` on a given `Element`.
  `abstract Scope`
  `getScope(TreePath path)`
  Returns the `Scope` for the `Tree` node identified by a given `TreePath`.
  `abstract SourcePositions`
  `getSourcePositions()`
  Returns a utility object for obtaining source positions.
  `abstract Tree`
  `getTree(Element element)`
  Returns the `Tree` node for a given `Element`.
  `abstract Tree`
  `getTree(Element e, AnnotationMirror a)`
  Returns the `Tree` node for an `AnnotationMirror` on a given `Element`.
  `abstract Tree`
  `getTree(Element e, AnnotationMirror a, AnnotationValue v)`
  Returns the `Tree` node for an `AnnotationValue` for an `AnnotationMirror` on a given `Element`.
  `abstract MethodTree`
  `getTree(ExecutableElement method)`
  Returns the `MethodTree` node for a given `ExecutableElement`.
  `abstract ClassTree`
  `getTree(TypeElement element)`
  Returns the `ClassTree` node for a given `TypeElement`.
  `abstract TypeMirror`
  `getTypeMirror(TreePath path)`
  Returns the `TypeMirror` for the `Tree` node identified by a given `TreePath`.
  `static Trees`
  `instance(ProcessingEnvironment env)`
  Returns a `Trees` object for a given `ProcessingEnvironment`.
  `static Trees`
  `instance(JavaCompiler.CompilationTask task)`
  Returns a `Trees` object for a given `CompilationTask`.
  `abstract boolean`
  `isAccessible(Scope scope, Element member, DeclaredType type)`
  Checks whether the given element is accessible as a member of the given type in a given scope.
  `abstract boolean`
  `isAccessible(Scope scope, TypeElement type)`
  Checks whether a given type is accessible in a given scope.
  `abstract void`
  `printMessage(Diagnostic.Kind kind, CharSequence msg, Tree t, CompilationUnitTree root)`
  Prints a message of the specified kind at the location of the tree within the provided compilation unit

  ### Methods declared in class Object

  `clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`
  Modifier and Type
  Method
  Description
  `protected Object`
  `clone()`
  Creates and returns a copy of this object.
  `boolean`
  `equals(Object obj)`
  Indicates whether some other object is "equal to" this one.
  `protected void`
  `finalize()`
  Deprecated, for removal: This API element is subject to removal in a future version.
  Finalization is deprecated and subject to removal in a future release.
  `final Class<?>`
  `getClass()`
  Returns the runtime class of this `Object`.
  `int`
  `hashCode()`
  Returns a hash code value for this object.
  `final void`
  `notify()`
  Wakes up a single thread that is waiting on this object's monitor.
  `final void`
  `notifyAll()`
  Wakes up all threads that are waiting on this object's monitor.
  `String`
  `toString()`
  Returns a string representation of the object.
  `final void`
  `wait()`
  Causes the current thread to wait until it is awakened, typically by being notified or interrupted.
  `final void`
  `wait(long timeoutMillis)`
  Causes the current thread to wait until it is awakened, typically by being notified or interrupted, or until a certain amount of real time has elapsed.
  `final void`
  `wait(long timeoutMillis, int nanos)`
  Causes the current thread to wait until it is awakened, typically by being notified or interrupted, or until a certain amount of real time has elapsed.

- ## Constructor Details

  - ### Trees

    public Trees()
    Constructor for subclasses to call.

- ## Method Details

  - ### instance

    public static Trees instance(JavaCompiler.CompilationTask task)
    Returns a `Trees` object for a given `CompilationTask`.
    Parameters:
      `task` - the compilation task for which to get the `Trees` object
    Returns:
      the `Trees` object
    Throws:
      `IllegalArgumentException` - if the task does not support the Tree API.

  - ### instance

    public static Trees instance(ProcessingEnvironment env)
    Returns a `Trees` object for a given `ProcessingEnvironment`.
    Parameters:
      `env` - the processing environment for which to get the `Trees` object
    Returns:
      the `Trees` object
    Throws:
      `IllegalArgumentException` - if the env does not support the Tree API.

  - ### getSourcePositions

    public abstract SourcePositions getSourcePositions()
    Returns a utility object for obtaining source positions.
    Returns:
      the utility object for obtaining source positions

  - ### getTree

    public abstract Tree getTree(Element element)
    Returns the `Tree` node for a given `Element`. Returns `null` if the node can not be found.
    Parameters:
      `element` - the element
    Returns:
      the tree node

  - ### getTree

    public abstract ClassTree getTree(TypeElement element)
    Returns the `ClassTree` node for a given `TypeElement`. Returns `null` if the node can not be found.
    Parameters:
      `element` - the element
    Returns:
      the class tree node

  - ### getTree

    public abstract MethodTree getTree(ExecutableElement method)
    Returns the `MethodTree` node for a given `ExecutableElement`. Returns `null` if the node can not be found.
    Parameters:
      `method` - the executable element
    Returns:
      the method tree node

  - ### getTree

    public abstract Tree getTree(Element e, AnnotationMirror a)
    Returns the `Tree` node for an `AnnotationMirror` on a given `Element`. Returns `null` if the node can not be found.
    Parameters:
      `e` - the element
      `a` - the annotation mirror
    Returns:
      the tree node

  - ### getTree

    public abstract Tree getTree(Element e, AnnotationMirror a, AnnotationValue v)
    Returns the `Tree` node for an `AnnotationValue` for an `AnnotationMirror` on a given `Element`. Returns `null` if the node can not be found.
    Parameters:
      `e` - the element
      `a` - the annotation mirror
      `v` - the annotation value
    Returns:
      the tree node

  - ### getPath

    public abstract TreePath getPath(CompilationUnitTree unit, Tree node)
    Returns the path to tree node within the specified compilation unit.
    Parameters:
      `unit` - the compilation unit
      `node` - the tree node
    Returns:
      the tree path

  - ### getPath

    public abstract TreePath getPath(Element e)
    Returns the `TreePath` node for a given `Element`. Returns `null` if the node can not be found.
    Parameters:
      `e` - the element
    Returns:
      the tree path

  - ### getPath

    public abstract TreePath getPath(Element e, AnnotationMirror a)
    Returns the `TreePath` node for an `AnnotationMirror` on a given `Element`. Returns `null` if the node can not be found.
    Parameters:
      `e` - the element
      `a` - the annotation mirror
    Returns:
      the tree path

  - ### getPath

    public abstract TreePath getPath(Element e, AnnotationMirror a, AnnotationValue v)
    Returns the `TreePath` node for an `AnnotationValue` for an `AnnotationMirror` on a given `Element`. Returns `null` if the node can not be found.
    Parameters:
      `e` - the element
      `a` - the annotation mirror
      `v` - the annotation value
    Returns:
      the tree path

  - ### getElement

    public abstract Element getElement(TreePath path)
    Returns the `Element` for the `Tree` node identified by a given `TreePath`. Returns `null` if the element is not available.
    Parameters:
      `path` - the tree path
    Returns:
      the element
    Throws:
      `IllegalArgumentException` - is the `TreePath` does not identify a `Tree` node that might have an associated `Element`.

  - ### getTypeMirror

    public abstract TypeMirror getTypeMirror(TreePath path)
    Returns the `TypeMirror` for the `Tree` node identified by a given `TreePath`. Returns `null` if the `TypeMirror` is not available.
    Parameters:
      `path` - the tree path
    Returns:
      the type mirror
    Throws:
      `IllegalArgumentException` - is the `TreePath` does not identify a `Tree` node that might have an associated `TypeMirror`.

  - ### getScope

    public abstract Scope getScope(TreePath path)
    Returns the `Scope` for the `Tree` node identified by a given `TreePath`. Returns `null` if the `Scope` is not available.
    Parameters:
      `path` - the tree path
    Returns:
      the scope

  - ### getDocComment

    public abstract String getDocComment(TreePath path)
    Returns the doc comment, if any, for the `Tree` node identified by a given `TreePath`. Returns `null` if no doc comment was found.
    Parameters:
      `path` - the tree path
    Returns:
      the doc comment
    See Also:
      - `DocTrees.getDocCommentTree(TreePath)`

  - ### isAccessible

    public abstract boolean isAccessible(Scope scope, TypeElement type)
    Checks whether a given type is accessible in a given scope.
    Parameters:
      `scope` - the scope to be checked
      `type` - the type to be checked
    Returns:
      true if `type` is accessible

  - ### isAccessible

    public abstract boolean isAccessible(Scope scope, Element member, DeclaredType type)
    Checks whether the given element is accessible as a member of the given type in a given scope.
    Parameters:
      `scope` - the scope to be checked
      `member` - the member to be checked
      `type` - the type for which to check if the member is accessible
    Returns:
      true if `member` is accessible in `type`

  - ### getOriginalType

    public abstract TypeMirror getOriginalType(ErrorType errorType)
    Returns the original type from the `ErrorType` object.
    Parameters:
      `errorType` - the errorType for which we want to get the original type
    Returns:
      the type mirror corresponding to the original type, replaced by the `ErrorType`

  - ### printMessage

    public abstract void printMessage(Diagnostic.Kind kind, CharSequence msg, Tree t, CompilationUnitTree root)
    Prints a message of the specified kind at the location of the tree within the provided compilation unit
    Parameters:
      `kind` - the kind of message
      `msg` - the message, or an empty string if none
      `t` - the tree to use as a position hint
      `root` - the compilation unit that contains tree

  - ### getLub

    public abstract TypeMirror getLub(CatchTree tree)
    Returns the lub of an exception parameter declared in a catch clause.
    Parameters:
      `tree` - the tree for the catch clause
    Returns:
      the lub of the exception parameter