anchor.diff:  	      (setf (get-property child property-name) value)))))
     child)
   
  +(defun memoize-property-access (sheep)
  +  (loop for property in (available-properties sheep)
  +     do (let ((owner (get-property-owner-with-hierarchy-list (sheep-hierarchy-list sheep) property)))
  +	  (set-property-owner owner property))))
  +
   ;;; Inheritance-related predicates
   (defun direct-parent-p (maybe-parent child)
     (when (member maybe-parent (sheep-direct-parents child))
  
positive.code: 	(progn
  	  (setf (gethash property-name (sheep-direct-properties sheep))
  		(make-instance 'standard-sheep-property :name property-name :value new-value))
  	  new-value))))
  
  (defgeneric remove-property (sheep property-name)
    (:documentation "Removes a property from a particular sheep."))
  (defmethod remove-property ((sheep standard-sheep) property-name)
    "Simply removes the hash value from the sheep. Leaves parents intact."
    (remhash property-name (sheep-direct-properties sheep)))
  
  (defun has-property-p (sheep property-name)
  
negative.code: (defmethod get-property ((sheep standard-sheep) property-name)
    "Default behavior is differential inheritance: It will look for that property-name up the entire 
  sheep hierarchy."
    (get-property-with-memoized-owner sheep property-name))
  
  (defun %get-property-object (sheep prop-name)
    (gethash prop-name (sheep-direct-properties sheep)))
  
  (defun (setf %get-property-object) (new-value sheep prop-name)
    (setf (gethash prop-name (sheep-direct-properties sheep)) new-value))
  
  (defun get-property-with-memoized-owner (sheep property-name)
    (multiple-value-bind (prop-owner has-p)
        (gethash property-name (sheep-property-owners sheep))
      (if has-p
  	(multiple-value-bind (prop-obj has-p)
  	    (gethash property-name (sheep-direct-properties prop-owner))
  	  (if has-p
  	      (%value prop-obj)
  	      (error 'unbound-property)))
  	(error 'unbound-property))))
  
  (defun get-property-with-hierarchy-list (list property-name)
    "Finds a property value under PROPERTY-NAME using a hierarchy list."
  