anchor.diff:    (check-type object object)
     (check-list-type new-parents object)
     (change-mold object (ensure-mold new-parents (mold-properties (%object-mold object))))
  -  ;; FIXME: This should be computed automagically... somehow
  -  (setf (%object-hierarchy object) (compute-object-hierarchy-list object))
     (map 'nil 'trigger-hierarchy-recalculation (%object-children object)))
   
   (defun (setf object-parents) (new-parents object)
  
positive.code:           :feature "Passing a non-list :parents option to #'OBJECT")
      (setf parents (list parents)))
    (handler-case
        (setf (%object-mold object) (ensure-mold (or parents (list =standard-object=))))
      (topological-sort-conflict (conflict)
        (error 'object-hierarchy-error :object object :conflict conflict)))
    (setf (%object-children object) nil
          (%object-hierarchy object) (compute-object-hierarchy-list object))
    (apply 'init-object object all-keys))
  
  (defun clone (object &optional (metaobject (%object-metaobject object)))
  
negative.code: ;;;
  ;;; Modifying mold-level stuff
  ;;;
  (defun (setf object-mold) (new-mold object)
    (with-accessors ((new-lineage mold-lineage)) new-mold
      (with-accessors ((old-lineage mold-lineage)) (%object-mold object)
        (unless (eq new-lineage old-lineage)
          (setf (gethash object (lineage-members new-lineage)) (%object-children object))
          (remhash object (lineage-members old-lineage)))))
    (setf (%object-mold object) new-mold
          (%object-hierarchy object) (compute-object-hierarchy-list object))
    new-mold)
  
  (defun change-mold (object new-mold)
    "Creates a new property-value vector in OBJECT, according to NEW-MOLD's specification, and
  automatically takes care of bringing the correct property-values over into the new vector, in the
  