anchor.diff:        (let ((slot (find slot-name
                           (class-slots class)
                           :key #'slot-definition-name)))
  -        (if (null slot)
  -            (error "The slot ~S is missing from the class ~S."
  -                   slot-name class)
  -            (let ((pos (position slot
  -                                 (remove-if-not #'instance-slot-p
  -                                                (class-slots class)))))
  -               (if (null pos)
  -                   (error "The slot ~S is not an instance~@
  +        (when (null slot)
  +          (error "The slot ~S is missing from the class ~S."
  +                 slot-name class))
  +        (case (slot-definition-allocation slot)
  +          (:instance
  +           (position slot (remove-if-not #'instance-slot-p
  +                                         (class-slots class))))
  +          (:class
  +           (slot-definition-location slot))
  +          (t
  +           (error "The slot ~S is not an instance or class~@
                              slot in the class ~S."
  -                          slot-name class)
  -                   pos))))))
  +                          slot-name class))))))
   
   (defun slot-contents (slots location)
  -  (svref slots location))
  +  (if (consp location)
  +      (cdr location)
  +      (svref slots location)))
   
   (defun (setf slot-contents) (new-value slots location)
  -  (setf (svref slots location) new-value))
  +  (if (consp location)
  +      (setf (cdr location) new-value)
  +      (setf (svref slots location) new-value)))
   
   (defun fast-sv-position (value simple-vector)
     (dotimes (i (array-dimension simple-vector 0))
  
positive.code:     (setf slot-name (slot-definition-name slot-name)))
    (multiple-value-bind (slots layout)
        (fetch-up-to-date-instance-slots-and-layout instance)
      (let* ((location (or (fast-sv-position slot-name layout)
                           (error "The slot ~S is missing from the class ~S."
                                  slot-name (class-of instance)))))
        (values slots location))))
  
  (defun std-slot-value (instance slot-name)
    (multiple-value-bind (slots location)
  
negative.code:   (getf (standard-slot-definition-properties slot) ':allocation))
  (defun (setf slot-definition-allocation) (new-value slot)
    (setf (getf* (standard-slot-definition-properties slot) ':allocation) new-value))
  
  (defun slot-definition-location (slot)
    (getf (standard-slot-definition-properties slot) ':location))
  (defun (setf slot-definition-location) (new-value slot)
    (setf (getf* (standard-slot-definition-properties slot) ':location) new-value))
  
  ;;; finalize-inheritance
  
  