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).