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:       (setf-get-property-using-metasheep 
         new-value (sheep-metasheep sheep) sheep property-name)))
  (defun (setf std-get-property) (new-value sheep property-name)
    (setf (gethash property-name (sheep-direct-properties sheep)) new-value))
  
  (defun get-cloneform (sheep property-name)
    (if (eql (sheep-metasheep sheep) =standard-sheep-metasheep=)
  
negative.code:        (sheep-metasheep sheep) sheep property-name)))
  (defun std-has-direct-property-p (sheep property-name)
    (multiple-value-bind (value has-p)
        (gethash property-name (gethash 'properties sheep))
      value
      has-p))
  
  