This package contains interfaces representing a compilation unit.

A compilation unit manages the five-stage compilation process for a single file or ABC script. They are created by a project based on its source path and library path.

Note: "Single file" means a single top-level file, which may include other files via mechanisms such as an AS `include` statement or an MXML `source` attribute.

Before any compilation starts, all directories on the source path are recursively enumerated and a particular type of compilation unit is created for each file that is found with the following extensions:

.as | ASCompilationUnit
.mxml | MXMLCompilationUnit
.fxg | FXGCompilationUnit
.properties | ResourceBundleCompilationUnit

Also before any compilation starts, all directories and SWCS on the library path are recursively enumerated to find the complete set of SWC files known to the project. The catalogs of these SWC files are read and an `SWCCompilationUnit` is created for every `<script>` tag found in the catalog. (A `<script>` tag represents one or more classes.) The library SWF of the SWCs is not read at this time.

During the compilation process, five requests get made on each compilation unit:

Request what? | Method | Result
AST | `getSyntaxTreeRequest()` | `ISyntaxTreeRequestResult`
File scope | `getFileScopeRequest()` | `IFileScopeRequestResult`
Outgoing dependencies | `getOutgoingDependenciesRequest()` | `IOutoingDependenciesRequestResult`
ABC | `getABCBytesRequest()` | `IABCBytesRequestResult`
SWF tags | `getSWFTagsRequest()` | `ISWFTagsRequestResult`

See the requests subpackage for more information.