anchor.diff:      (cond ((null sub-tree-parent)
   	   (call-next-method))
   	  ((eq node (left sub-tree-parent))
  -	   (setf (left sub-tree-parent) nil)
  +	   (unlink-left sub-tree-parent node)
   	   (call-next-method)
  -	   (setf (left sub-tree-parent) child))
  +	   (link-left sub-tree-parent child))
   	  (t
  -	   (setf (right sub-tree-parent) nil)
  +	   (unlink-right sub-tree-parent node)
   	   (call-next-method)
  -	   (setf (right sub-tree-parent) child)))))
  +	   (link-right sub-tree-parent child))))
  +  child)
   
   (defmethod rotate-right ((tree node))
     (rotate-right-with-child tree (left tree)))
  
positive.code:     (cond ((null sub-tree-parent)
  	   (call-next-method))
  	  ((eq node (left sub-tree-parent))
  	   (setf (left sub-tree-parent) nil)
  	   (call-next-method)
  	   (setf (left sub-tree-parent) child))
  	  (t
  	   (setf (right sub-tree-parent) nil)
  	   (call-next-method)
  	   (setf (right sub-tree-parent) child)))))
  
  (defmethod rotate-left ((tree node))
    (rotate-left-with-child tree (right tree)))
  
negative.code: ;;; The node L is returned
  (defmethod rotate-right-with-child ((node node) (child node))
    (let ((grand-child (right child)))
      (unlink-left node child)
      (unlink-right child grand-child)
      (link-left node grand-child)
      (link-right child node)
      child))
  
  (defmethod rotate-right-with-child :around
  