anchor.diff:  ;;;
   ;;; Reflection API
   ;;;
  +(defun 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 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 direct-properties (object)
     "Returns a list of the names of OBJECT's direct properties -- ie, only ones which have been
  
positive.code:         (add-writer-to-object `(setf ,accessor-name) property-name object))))
    ;; Finally, for SETF-compliance, we return the value.
    new-value)
  (defun (setf property-value) (new-value object property-name &rest options)
    (if (std-object-p object)
        (apply #'(setf std-sheeple:property-value) new-value object property-name options)
        (apply #'(setf smop:property-value) new-value
               (object-metaobject object) object property-name options)))
  
  ;;;
  ;;; Special Properties
  
negative.code:                           (format *query-io* "~&Value to use: ")
                            (list (read *query-io*)))
             value))))
  
  (defun direct-property-p (object property-name)
    "Returns T if OBJECT has a property called PROPERTY-NAME as a direct property.
  NIL otherwise."
    (if (std-object-p object)
        (std-sheeple:direct-property-p object property-name)
        (smop:direct-property-p (object-metaobject object) object property-name)))
  (defun std-sheeple:direct-property-p (object property-name)
    (handler-case (progn (direct-property-value object property-name) t)
      (unbound-property () nil)))
  
  (defun 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 (std-object-p object)
        (std-sheeple:property-makunbound object property-name)
        (smop:property-makunbound (object-metaobject object) object property-name)))
  (defun std-sheeple:property-makunbound (object property-name)
    (if (direct-property-p object property-name)
        (prog1 object
  