anchor.diff:  ;;;;;;;;;;;;;;;;;;
   ;;; build function
   (defun reduce-nobranch-descendant (node)
  -  (loop FOR child = (node-child node) THEN (node-child child)
  -        WHILE (and child
  -                   (not (node-terminal? child))
  -                   (not (node-sibling child)))
  -    COLLECT (node-label child) INTO labels
  -    FINALLY
  -    (setf (node-child node) child
  -          (node-nobranch-child-labels node) labels)))
  +  (when (null (node-nobranch-child-labels node))
  +    (loop FOR child = (node-child node) THEN (node-child child)
  +          WHILE (and child
  +                     (not (node-terminal? child))
  +                     (null (node-sibling child)))
  +      COLLECT (node-label child) INTO labels
  +      FINALLY
  +      (setf (node-child node) child
  +            (node-nobranch-child-labels node) labels))))
   
   (defun share (node memo)
     (when (null node)
  
positive.code:       (cond ((stream:eos? in) (node-terminal? parent))
              ((null node) nil)
              ((= (stream:peek in) (node-label node))
               (when (loop FOR c IN (node-nobranch-child-labels node)
                           ALWAYS (and (progn (stream:eat in)
                                              (not (stream:eos? in)))
                                       (= c (stream:peek in))))
  
negative.code: ;;; declamation
  (declaim #.*fastest*
           (inline make-node collect-children calc-child-total calc-sibling-total 
                   node-options element-count reduce-nobranch-descendant))
  
  ;;;;;;;;
  ;;; node
  