anchor.diff:                                              (std-print-sheeple-object object stream))))))
       (print-sheeple-object object stream)))
   
  -;; If we didn't define these functions, Lisp's package system would
  -;; export the SETF version as well as the reader.
  +;; The SETF version of this would require that something like CHANGE-METAOBJECT exists.
   (defun object-metaobject (object)
     (%object-metaobject object))
   
  
positive.code: ;;;
  ;;; Inheritance
  ;;;
  
  (defun topological-sort (elements constraints tie-breaker)
    "Sorts ELEMENTS such that they satisfy the CONSTRAINTS, falling back
  on the TIE-BREAKER in the case of ambiguous constraints. On the assumption
  
negative.code:   (setf (%object-hierarchy-cache object) (compute-object-hierarchy-list object))
    (%map-children 'memoize-object-hierarchy-list object))
  
  (defun (setf object-parents) (new-parent-list object)
    ;; TODO - this needs some careful writing, validation of the hierarchy-list, new mold, etc.
    )
  
  (defun object-hierarchy-list (object)
    "Returns the full hierarchy-list for OBJECT"
    (mold-hierarchy-cache (%object-mold object)))
  
  ;;; Inheritance predicates
  (defun parentp (maybe-parent child)
  