This package provides an API for program instrumentation.

This package provides a set of interfaces for applying intrumentations on a program, i.e. a program modification which adds some feature (methods, classes, code) to the original program. These instrumentations are abstractly defined and can occur at compile-time, load-time, or runtime depending on the {@link org.aopalliance.instrument.Instrumentor} implementation. Moreover, since it uses the {@link org.aopalliance.reflect} package which provides an abstract representation of the program, the instrumentations can be implemented at a source-code level or at a bytecode level, depending on the implementation.

This API is specific to AOP. This means that the set of program instrumentations that is allowed is a restricted set compared to a general-purpose API. However, general-purpose transformation tools should provide an implementation of this API in order to be easily used by several AO systems.

## Dependencies

This package requires the {@link org.aopalliance.reflect} package.