anchor.diff:  (defgeneric who-sets (sheep property-name)
     (:documentation "Returns the sheep defining the value of SHEEP's property-name."))
   (defmethod who-sets ((sheep standard-sheep) property-name)
  -  (loop for sheep in (compute-sheep-hierarchy-list sheep)
  -     if (has-direct-property-p sheep property-name)
  -     return sheep))
  +  (multiple-value-bind (owner has-p)
  +      (gethash property-name (sheep-property-owners sheep))
  +    (if has-p
  +	owner
  +	(error 'unbound-property))))
   
   (defgeneric available-properties (sheep)
     (:documentation "Returns a list of property-names available to SHEEP."))
  
positive.code: 	   (setf sheep (set-up-inheritance sheep sheeple))))
      (set-up-properties properties sheep)
      (set-up-other-options options sheep)
      sheep))
  
  (defun set-up-inheritance (new-sheep sheeple)
  
negative.code: 							  (sheep-direct-children new-parent))))))
  	       (compute-sheep-hierarchy-list child)
  	       (mapc #'compute-sheep-hierarchy-list (sheep-direct-children child))
  	       (memoize-property-access child)
  	       child)
  	   (sheep-hierarchy-error ()
  	     (progn
  