anchor.diff:  (defparameter *secret-sheep-identifier* (gensym))
   (define-condition unbound-property (sheeple-error) ())
   
  +(defun sheep-metasheep (sheep)
  +  (gethash 'metasheep sheep))
  +(defun (setf sheep-metasheep) (new-mo sheep)
  +  (declare (ignore new-mo sheep))
  +  (error "Changing metasheeps is not supported right now"))
  +
   ;;;
   ;;; Slot access
   ;;;
  +
   (defun get-property (sheep property-name)
     (if (eql (sheep-metasheep sheep) =standard-sheep-metasheep=)
         (std-get-property sheep property-name)
  
positive.code:       (std-remove-property sheep property-name)
        (remove-property-using-metasheep (sheep-metasheep sheep) sheep property-name)))
  (defun std-remove-property (sheep property-name)
    (remhash property-name (sheep-direct-propertes sheep)))
  
  (defun has-property-p (sheep property-name)
    "Returns T if a property with PROPERTY-NAME is available to SHEEP."
  
negative.code:     (setf (gethash 'property-owners object) (make-weak-hash-table :weakness :value :test #'equal))
      (setf (gethash 'roles object) nil)
      (setf (gethash 'hierarchy-list object) nil)
      (std-finalize-sheep object)
      object))
  
  (defvar =t=
  