The representation of a class while it is being instrumented and transformed. PlasticClass allows for an imperative style of development: the PlasticClass is provided to other objects; they can query it for relevant fields or methods, and invoke methods that modify the class in various ways. Ultimately, the end result is a {@link ClassInstantiator} used to create instances of the fully instrumented and transformed class.
The terminology is that a class that is being transformed is "plastic", but the end result is a normal concrete class (albeit in a different class loader).
Implements {@link AnnotationAccess} to provide access to annotations on the type itself.
This class is expressly
not thread safe; only a single thread should be responsible for operating on a PlasticClass.
TODO: what about annotation inheritance?