anchor.diff:                               :right (s-diet-node-right a-diet-node)
                                :left tree-w/o-min-interval))))))
   
  -(defun join-left (a-diet-node)
  +(defun join-left-2 (a-diet-node)
     (with-slots (top bottom left right) a-diet-node
       (if (null left)
           a-diet-node
  
positive.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?
           ((eql bottom top) (diet-merge a-tree))
           ;; Do we remove a bottom part?
           ((eql a-val bottom) (make-s-diet-node :bottom (1+ bottom) :top top :left left :right right))
           ;; Do we remova a top part?
           ((eql a-val top) (make-s-diet-node :bottom bottom :top (1- top) :left left :right right))
           ;; Neither a single value interval
           ;; nor we shrank either bottom or top
           ;; Need to split into 2 new nodes.
           ;; We chose the split pattern in a random fashion
           ;;
           (t
  
negative.code: (defstruct s-diet-node bottom top left right)
  
  ;; 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
  