anchor.diff:  			  (list =dolly=))))
       (setf (sheep-direct-parents sheep) real-parents)
       (loop for parent in parents
  -       do (let ((pointer (make-weak-pointer sheep)))
  -    	    (pushnew pointer (sheep-direct-children parent))
  -    	    (finalize sheep (lambda () (setf (sheep-direct-children parent)
  -    					     (delete (the (not number) pointer)
  -    						     (the list (sheep-direct-children parent))))))))
  +         for pointer = (make-weak-pointer sheep)
  +       do (setf (gethash sheep (sheep-direct-children parent)) t))
       (memoize-sheep-hierarchy-list sheep)
       sheep))
   
  
positive.code:   (let ((list (compute-sheep-hierarchy-list sheep)))
      (setf (sheep-hierarchy-list sheep)
  	  list)
      (mapc (lambda (descendant) 
  	    (memoize-sheep-hierarchy-list (weak-pointer-value descendant)))
  	  (sheep-direct-children sheep))))
  
  
negative.code: 	 (handler-case
  	     (progn
  	       (pushnew new-parent (sheep-direct-parents child))
                 (setf (gethash child (sheep-direct-children new-parent)) t)
  	       child)
  	   (sheep-hierarchy-error ()
  	     (progn
  