# Class TreePath

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

All Implemented Interfaces:
  `Iterable<Tree>`

public class TreePath extends Object implements Iterable<Tree>
A path of tree nodes, typically used to represent the sequence of ancestor nodes of a tree node up to the top-level `CompilationUnitTree` node.

Since:
  1.6

- ## Constructor Summary

  Constructors
  Constructor
  Description
  `TreePath(CompilationUnitTree node)`
  Creates a TreePath for a root node.
  `TreePath(TreePath path, Tree tree)`
  Creates a TreePath for a child node.

- ## Method Summary

  Modifier and Type
  Method
  Description
  `CompilationUnitTree`
  `getCompilationUnit()`
  Returns the compilation unit associated with this path.
  `Tree`
  `getLeaf()`
  Returns the leaf node for this path.
  `TreePath`
  `getParentPath()`
  Returns the path for the enclosing node, or `null` if there is no enclosing node.
  `static TreePath`
  `getPath(CompilationUnitTree unit, Tree target)`
  Returns a tree path for a tree node within a compilation unit, or `null` if the node is not found.
  `static TreePath`
  `getPath(TreePath path, Tree target)`
  Returns a tree path for a tree node within a subtree identified by a TreePath object.
  `Iterator<Tree>`
  `iterator()`
  Iterates from leaves to root.

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

  ### Methods declared in interface Iterable

  `forEach, spliterator`
  Modifier and Type
  Method
  Description
  `default void`
  `forEach(Consumer<? super Tree> action)`
  Performs the given action for each element of the `Iterable` until all elements have been processed or the action throws an exception.
  `default Spliterator<Tree>`
  `spliterator()`
  Creates a `Spliterator` over the elements described by this `Iterable`.

- ## Constructor Details

  - ### TreePath

    public TreePath(CompilationUnitTree node)
    Creates a TreePath for a root node.
    Parameters:
      `node` - the root node

  - ### TreePath

    public TreePath(TreePath path, Tree tree)
    Creates a TreePath for a child node.
    Parameters:
      `path` - the parent path
      `tree` - the child node

- ## Method Details

  - ### getPath

    public static TreePath getPath(CompilationUnitTree unit, Tree target)
    Returns a tree path for a tree node within a compilation unit, or `null` if the node is not found.
    Parameters:
      `unit` - the compilation unit to search
      `target` - the node to locate
    Returns:
      the tree path

  - ### getPath

    public static TreePath getPath(TreePath path, Tree target)
    Returns a tree path for a tree node within a subtree identified by a TreePath object. Returns `null` if the node is not found.
    Parameters:
      `path` - the path in which to search
      `target` - the node to locate
    Returns:
      the tree path of the target node

  - ### getCompilationUnit

    public CompilationUnitTree getCompilationUnit()
    Returns the compilation unit associated with this path.
    Returns:
      the compilation unit

  - ### getLeaf

    public Tree getLeaf()
    Returns the leaf node for this path.
    Returns:
      the leaf node

  - ### getParentPath

    public TreePath getParentPath()
    Returns the path for the enclosing node, or `null` if there is no enclosing node.
    Returns:
      the path for the enclosing node

  - ### iterator

    public Iterator<Tree> iterator()
    Iterates from leaves to root.
    Specified by:
      `iterator` in interface `Iterable<Tree>`
    Returns:
      an Iterator.