anchor.diff:  (defstruct s-diet-node bottom top left right)
   
  -;; Go to the right subtree
  +;; Go right until you hit a node without a right offspring.
  +;; When this happens, return node values and a tree that leads
  +;; to this node, w/o this very node.
   ;; Returns the following values:
   ;; - bottom boundary of a rightmost leaf
   ;; - top boundary of a rightmost leaf
  
positive.code:               (make-s-diet-node :bottom max-int-bottom :top top :left l-subtree-w/o-max-interval :right right)
                (make-s-diet-node :bottom bottom :top top :left left :right right))))))
  
  (defun join-right (a-diet-node)
    (with-slots (top bottom left right) a-diet-node
      (if (null right)
          a-diet-node
  
negative.code:          ((> a-val top)
            (make-s-diet-node :bottom bottom :top top :left left :right (diet-remove a-val right)))
           ;; a-val belongs to the interval [bottom; top].
           ;; Is it a single value interval? If so, then merge.
           ((eql bottom top) (diet-merge a-tree))
           ;; Do we shrink from the bottom? Return a new node with bottom element removed.
           ((eql a-val bottom) (make-s-diet-node :bottom (1+ bottom) :top top :left left :right right))
           ;; Do we shrink from the top? Return a new node with top element removed.
           ((eql a-val top) (make-s-diet-node :bottom bottom :top (1- top) :left left :right right))
           ;; Do we remove a somewhere in between?
           ;; Need to split into two new nodes.
           ;; We chose the split pattern in a random fashion
           ;;
           (t
  