If one method must be called by another method in order to be
executed, the first function or method is a said to be shadowed
by the second method. Normally, only one method or system function
will be applicable to a particular generic function
call. If there is more than one applicable method, the generic
dispatch will only execute the one with highest precedence. Letting
the generic dispatch automatically handle the methods in this
manner is called the declarative technique,
for the declarations of the method restrictions dictate which
method gets executed in specific circumstances. However, the functions
call-next-method and override-next-method
(see section 12.15.6 and 12.15.7) may also be used which allow
a method to execute the method that it is shadowing. This is called
the imperative technique, since
the method execution itself plays a role in the generic dispatch.
This is not recommended unless it is absolutely necessary.
In most circumstances, only one piece of code should need to be
executed for a particular set of arguments. Another imperative
technique is to use the function call-specific-method
to override method precedence (see section 12.15.8)