anchor.diff:  (defun compute-sheep-hierarchy-list (sheep)
     (handler-case 
         (let ((sheeple-to-order (collect-parents sheep)))
  -  	(setf (sheep-hierarchy-list sheep)
  -	      (topological-sort sheeple-to-order
  -				(remove-duplicates
  -				 (mapappend #'local-precedence-ordering
  -					    sheeple-to-order))
  -				#'std-tie-breaker-rule)))
  +  	(topological-sort sheeple-to-order
  +			  (remove-duplicates
  +			   (mapappend #'local-precedence-ordering
  +				      sheeple-to-order))
  +			  #'std-tie-breaker-rule))
       (simple-error ()
         (error 'sheep-hierarchy-error))))
   
  
positive.code:   (setf (sheep-direct-parents child)
  	(delete parent (sheep-direct-parents child)))
    (setf (sheep-direct-children parent)
  	(delete child (sheep-direct-children parent)))
    (compute-sheep-hierarchy-list child)
    (mapc #'compute-sheep-hierarchy-list (sheep-direct-children child))
    (memoize-property-access child)
    (when keep-properties
      (with-accessors ((parent-properties sheep-direct-properties))
  	parent
  
negative.code: 	(progn
  	  (setf (gethash property-name (sheep-direct-properties sheep))
  		(make-instance 'standard-sheep-property :name property-name :value new-value))
  	  new-value))))
  
  (defmethod (setf get-property) :after (new-value (sheep standard-sheep) property-name)
    (declare (ignore new-value property-name))
    (memoize-property-access sheep)
    (loop for child-pointer in (sheep-direct-children sheep)
       do (memoize-property-access (weak-pointer-value child-pointer))))
  
  (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-property-owners sheep))
    (remhash property-name (sheep-direct-properties sheep)))
  (defmethod remove-property :after ((sheep standard-sheep) property-name)
    (loop for child-pointer in (sheep-direct-children sheep)
       do (remhash property-name (sheep-direct-properties (weak-pointer-value child-pointer)))))
  
  (defun has-property-p (sheep property-name)
    "Returns T if a property with PROPERTY-NAME is available to SHEEP."
  