This package defines the Spoon's compile-time meta-model of Java programs.
The meta-model defines a read/write compile-time meta-representation of Java 5 programs.
The programmers should instantiate or resolve the meta-elements by using {@link spoon.reflect.Factory}'s sub-factories because it ensures
the model consistency. The {@link spoon.reflect.CoreFactory} is the raw factory for program elements and is the
only factory to be implemented when wanting to provide an alternative implementation of the Spoon meta-model.
This package defines compilation units that hold the source code and some classes around them (in most cases, these features should be ignored by the programmers).
This package defines the references to program elements for the meta-model.
References usually correspond to elements defined in the {@link spoon.reflect.declaration} package. It is
a weak reference system which allow referencing elements that do not exist yet, or which are defined
outside of the reified program model. In that last case, some functions use regula Java reflection instead of
Spoon reflection and referenced elements should be in the classpath.