anchor.diff:  ;;;
   ;;; Existential
   ;;;
  -(defun direct-property-value (object property-name)
  +(defmopfun 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)
  
positive.code:                           (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
          (change-mold object
  
negative.code: (defun property-position (property-name object)
    (position property-name (mold-properties (%object-mold object))))
  
  (defmacro defmopfun (name lambda-list &body body)
    (let ((documentation (when (stringp (car body)) (pop body))))
      `(progn
         (defun ,name ,lambda-list
           ,(when documentation documentation)
           (if (std-object-p ,(car lambda-list))
               (,(intern (symbol-name name) :std-sheeple)
                 ,@lambda-list)
               (,(intern (symbol-name name) :smop)
                 (object-metaobject ,(car lambda-list))
                 ,@lambda-list)))
         (defun ,(intern (symbol-name name) :std-sheeple) ,lambda-list
           ,@body))))
  
  ;;;
  ;;; Property Metaobjects
  ;;;
  