anchor.diff:    (label         0 :type octet)
     (terminal?   nil :type boolean)
     (child       nil :type (or null node))
  +  (nobranch-child-labels nil :type list)
     (sibling     nil :type (or null node))
     (child-total   0 :type positive-fixnum) ; amount of child side nodes
     (sibling-total 0 :type positive-fixnum) ; amount of sibling side nodes
  
positive.code: 
  ;;;;;;;;;;;;;;;;;;
  ;;; build function
  (defun share (node memo)
    (if (null node)
        nil
      (or (dict:get node memo)
          (progn 
            (setf (node-child node) (share (node-child node) memo)
                  (node-sibling node) (share (node-sibling node) memo))
            (dict:get node memo))
          (setf (dict:get node memo) node))))
  
  (defun push-child (in parent)
    (if (stream:eos? in)
  
negative.code:       (when (= -1 hash)
          (setf hash (logxor (sxhash (node-label node))
                             (sxhash (node-terminal? node))
                             (sxhash (node-nobranch-child-labels node))
                             (fixnumize (* (sxhash-node (node-child node)) 7))
                             (fixnumize (* (sxhash-node (node-sibling node)) 13))))
          (setf child-total (calc-child-total node)
  