Method: (SLOT-MAKUNBOUND-USING-CLASS AROUND PERSISTENT-CLASS T T)

Source

(defmethod slot-makunbound-using-class :around ((class persistent-class)
                                                object
                                                slot-name-or-def)
  (maybe-update-slot-info class)
  ;; If this is a persistent slot, tell the cache that this object
  ;; has changed. Rely on the cache to save it when necessary.
  (let ((slot (slot-def-and-name class slot-name-or-def)))
    (if (and (slot-persistence slot)
             ;; If the RUCKSACK slot isn't bound yet, the object is
             ;; just being loaded from disk and we don't need to
             ;; do anything special.
             (slot-boundp object 'rucksack))
        (let* ((old-boundp (slot-boundp-using-class class object slot-name-or-def))
               (old-value
                (and old-boundp
                     (slot-value-using-class class object slot-name-or-def)))
               (result (call-next-method)))
          (cache-touch-object object (cache object))
          (rucksack-maybe-index-changed-slot (rucksack object)
                                             class object slot
                                             old-value nil
                                             old-boundp nil)
          result)
      (call-next-method))))
Source Context