Subclasses merely need to extend this class and implement the interfaces
to be introduced themselves. In this case the delegate is the subclass
instance itself. Alternatively a separate delegate may implement the
interface, and be set via the delegate bean property.

Delegates or subclasses may implement any number of interfaces.
All interfaces except IntroductionInterceptor are picked up from
the subclass or delegate by default.

The suppressInterface method can be used to suppress interfaces
implemented by the delegate but which should not be introduced to the owning
AOP proxy.

invoke

Subclasses may need to override this if they want to perform custom
behaviour in around advice. However, subclasses should invoke this
method, which handles introduced interfaces and forwarding to the target.

doProceed

Proceed with the supplied MethodInterceptor.
Subclasses can override this method to intercept method invocations on the
target object which is useful when an introduction needs to monitor the object
that it is introduced into. This method is never called for
MethodInvocations on the introduced interfaces.