An method override extension routing aspect.
Overrides calls to methods marked by an
Extend
annotation with calls
to methods having the same signature in extensions registered for the
ExtensionPoint
referred by the
Extend
method annotation.
Overriding methods can call the overridden method using its correspondent
Trait
representation (i.e. a method having the same signature).
If no extension is defined the call proceeds with the original method.
The aspect uses the
AJExtender
static utility to for extension
invocation and for maintaining thread-local extension-bypass contexts as not all
calls must be overridden and calls from within the extension must be aware of
this context (see
AJProxyTrait
).