anchor.diff:                   split-four-node move-red-left move-red-right))
   
   (defun rotate-left (h)
  +  (assert (and h (node-red-p (node-right h))))
     (let ((x (node-right h)))
       (setf (node-right h) (node-left x)
             (node-left x) h)
       x))
   
   
  -(defun rotate-right (h)
  -  (let ((x (node-left h)))
  -    (setf (node-left h) (node-right x)
  -          (node-right x) h)
  -    x))
  -
  -
   (defun lean-left (h)
  -  "Samre as rotate-left, plus update colors."
  +  "Same as rotate-left, plus update colors."
     (let ((x (node-right h)))
       (setf (node-right h) (node-left x)
             (node-left x) h
             (node-color x) (node-color h)
             (node-color h) :red)
  +    x))
  +
  +
  +(defun rotate-right (h)
  +  (assert (and h (node-red-p (node-left h))))
  +  (let ((x (node-left h)))
  +    (setf (node-left h) (node-right x)
  +          (node-right x) h)
       x))
   
   
  
positive.code:   (format t "~A~A~A+---- NIL~A~%" indentation bar *black* *normal*))
  
  (defmethod dump ((self node) &optional (indentation "") (bar " "))
    (format t "~A~A~A+---- ~A: ~A~A~%" indentation bar
            (if (node-red-p self) *red* *black*) 
            (node-key self) (node-value self)
            *normal*)
    (format t "~A~A    |~%" indentation bar)
    (dump (node-left  self) (concat indentation bar "    ") "|")
    (format t "~A~A    |~%" indentation bar)
    (dump (node-right self) (concat indentation bar "    ") " "))
  
  
  (defmethod dump ((self tree) &optional (indentation "") (bar " "))
  
negative.code:         (incf (tree-count tree))
          (make-node :key key :value value :color :red))
        (progn
          
          (when (and (node-red-p (node-left h))
                     (node-red-p (node-left (node-left h))))
            (setf h (split-four-node h)))
  
          (cond
            ((funcall lessp key (node-key h))
             (setf (node-left  h) (insert-node (node-left  h) key value tree lessp)))
  