anchor.diff:  ;;;
   ;;; Reflection API
   ;;;
  -(defun property-owner (object property-name)
  +(defmopfun property-owner (object property-name)
     "Returns the object, if any, from which OBJECT would fetch the value for PROPERTY-NAME"
  -  (if (std-object-p object)
  -      (std-sheeple:property-owner object property-name)
  -      (smop:property-owner (object-metaobject object) object property-name)))
  -(defun std-sheeple:property-owner (object property-name)
     (find-if (rcurry 'direct-property-p property-name) (object-hierarchy-list object)))
   
  -(defun direct-properties (object)
  +(defmopfun direct-properties (object)
     "Returns a list of the names of OBJECT's direct properties -- ie, only ones which have been
   set directly in OBJECT using (setf property-value). The consequences of side-effecting this
   returned list are undefined."
  -  (if (std-object-p object)
  -      (std-sheeple:direct-properties object)
  -      (smop:direct-properties object)))
  -(defun std-sheeple:direct-properties (object)
     (coerce (mold-properties (%object-mold object)) 'list))
   
  -(defun available-properties (object)
  +(defmopfun available-properties (object)
     "Returns a list of the names of all properties available to OBJECT, including inherited ones."
  -  (if (std-object-p object)
  -      (std-sheeple:available-properties object)
  -      (smop:available-properties object)))
  -(defun std-sheeple:available-properties (object)
     (delete-duplicates (nconc (copy-list (direct-properties object))
                               (mapcan 'available-properties (object-parents object)))))
   
  
positive.code: ;;;
  ;;; Existential
  ;;;
  (defun direct-property-value (object property-name)
    "Returns the property-value set locally in OBJECT for PROPERTY-NAME. If the
  property is not set locally, a condition of type `unbound-property' is signaled."
    (if (std-object-p object)
        (std-sheeple:direct-property-value object property-name)
        (smop:direct-property-value (object-metaobject object) property-name)))
  (defun std-sheeple:direct-property-value (object property-name)
    (check-type property-name symbol)
    (aif (property-position property-name object)
         (svref (%object-property-values object) it)
  
negative.code:                           (list (read *query-io*)))
             value))))
  
  (defmopfun direct-property-p (object property-name)
    "Returns T if OBJECT has a property called PROPERTY-NAME as a direct property.
  NIL otherwise."
    (handler-case (progn (direct-property-value object property-name) t)
      (unbound-property () nil)))
  
  (defmopfun property-makunbound (object property-name)
    "Removes OBJECT's direct property named PROPERTY-NAME. Signals an error if there is no such
  direct property. Returns OBJECT."
    (if (direct-property-p object property-name)
        (prog1 object
          (change-mold object
  