Common Lisp the Language, 2nd Edition
Methods for update-instance-for-different-class may be defined
to specify actions to be taken when an instance is updated. If only
:after methods for update-instance-for-different-class are
defined, they will be run after the system-supplied primary method for
initialization and will not interfere with the default behavior of
update-instance-for-different-class. Because no initialization
arguments are passed to update-instance-for-different-class when
it is called by change-class, the :initform forms for slots
that are filled by :before methods for
update-instance-for-different-class will not be evaluated by
shared-initialize.
Methods for shared-initialize may be defined to customize class
redefinition (see section 28.1.9.5).