# Interface CompilationUnitTree

All Superinterfaces:
  `Tree`

public interface CompilationUnitTree extends Tree
Represents the abstract syntax tree for ordinary compilation units and modular compilation units.

See Java Language Specification:
  7.3 Compilation Units
  7.4 Package Declarations
  7.7 Module Declarations
Since:
  1.6

- ## Nested Class Summary

  ### Nested classes/interfaces declared in interface Tree

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

- ## Method Summary

  Modifier and Type
  Method
  Description
  `List<? extends ImportTree>`
  `getImports()`
  Returns the import declarations appearing in this compilation unit, or an empty list if there are no import declarations.
  `LineMap`
  `getLineMap()`
  Returns the line map for this compilation unit, if available, or `null` if the line map is not available.
  `default ModuleTree`
  `getModule()`
  Returns the module tree associated with this compilation unit, or `null` if there is no module declaration.
  `PackageTree`
  `getPackage()`
  Returns the package tree associated with this compilation unit, or `null` if there is no package declaration.
  `List<? extends AnnotationTree>`
  `getPackageAnnotations()`
  Returns the annotations listed on any package declaration at the head of this compilation unit, or `null` if there is no package declaration.
  `ExpressionTree`
  `getPackageName()`
  Returns the name contained in any package declaration at the head of this compilation unit, or `null` if there is no package declaration.
  `JavaFileObject`
  `getSourceFile()`
  Returns the file object containing the source for this compilation unit.
  `List<? extends Tree>`
  `getTypeDecls()`
  Returns the type declarations appearing in this compilation unit, or an empty list if there are no type declarations.

  ### Methods declared in interface Tree

  `accept, getKind`
  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

  - ### getModule

    default ModuleTree getModule()
    Returns the module tree associated with this compilation unit, or `null` if there is no module declaration.
    Implementation Requirements:
      This implementation throws `UnsupportedOperationException`
    Returns:
      the module tree
    Since:
      17

  - ### getPackageAnnotations

    List<? extends AnnotationTree> getPackageAnnotations()
    Returns the annotations listed on any package declaration at the head of this compilation unit, or `null` if there is no package declaration.
    Returns:
      the package annotations

  - ### getPackageName

    ExpressionTree getPackageName()
    Returns the name contained in any package declaration at the head of this compilation unit, or `null` if there is no package declaration.
    Returns:
      the package name

  - ### getPackage

    PackageTree getPackage()
    Returns the package tree associated with this compilation unit, or `null` if there is no package declaration.
    Returns:
      the package tree
    Since:
      9

  - ### getImports

    List<? extends ImportTree> getImports()
    Returns the import declarations appearing in this compilation unit, or an empty list if there are no import declarations.
    Returns:
      the import declarations

  - ### getTypeDecls

    List<? extends Tree> getTypeDecls()
    Returns the type declarations appearing in this compilation unit, or an empty list if there are no type declarations. The list may also include empty statements resulting from extraneous semicolons. A modular compilation unit does not contain any type declarations.
    Returns:
      the type declarations

  - ### getSourceFile

    JavaFileObject getSourceFile()
    Returns the file object containing the source for this compilation unit.
    Returns:
      the file object

  - ### getLineMap

    LineMap getLineMap()
    Returns the line map for this compilation unit, if available, or `null` if the line map is not available.
    Returns:
      the line map for this compilation unit