The MailNotifySideEffect is implemented as an abstract class, since we are not interested in the many other methods in
the Confirmable interface. Extending the SideEffectOf is a convenience mechanism, instead of an explicit @SideEffectFor
annotation on a private field, which can be used in rare occasions when you are not able to extend. This base class
defines the next field, which is set up by the Polygene™ runtime and points to the next fragment in the call stack. We can
also see that the MailService, HasLineItems and HasCustomer are provided to the side-effect, which is done with
dependency injection. Polygene™ also supports dependency injection via constructors and methods.

Methods of the SideEffect Fragment will be called before the Mixin invocation.

AppliesTo

For generic SideEffects that should only trigger on methods with specific annotations or fulfilling some expression, add
@AppliesTo annotation to the SideEffect class which points to either triggering annotation(s), or to AppliesToFilter
implementation(s).

The SideEffect is invoked if one of the triggering annotations is found or one of the AppliesToFilter accepts the
invocation. In other words the AppliesTo arguments are OR’ed.