anchor.diff:      "Return a symbol matching key from trie's branches."
       (find key (trie-branches trie) :test #'equal :key (lambda (n) (trie-key n))))
   
  -(defun add-key (trie key)
  -    (push (setf node (make-trie :key key)) (trie-branches trie))
  -    node)
  -
  -(defun add-key-let (trie key)
  -    (let ((node (make-trie :key key)))
  -        (push node (trie-branches trie))
  -        (return-from add-key-let node)))
  -
  -(defun remove-key (trie key)
  +(defun add-key (trie key &optional (count 1))
  +    "Add a node to trie. If node exists, increases it’s width."
  +    (when (< count 0) (error (format nil "Negative count ~A." count)))
  +    (let ((node (find-key trie key)))
  +        (if node
  +            (incf (trie-width node) count)
  +            (setq node (create-node trie key count)))
  +        node))
  +
  +(defun create-node (trie key &optional (count 0))
  +    "Destructively adds node to trie"
  +    (car (push (make-trie :key key :width count) (trie-branches trie))))
  +
  +(defun remove-key (trie key &optional (count 1))
  +    "Add a node to trie. If node exists, increases it’s width.")
  +
  +(defun remove-key-broken (trie key)
       (let ((node (find-key trie key))
             (branches (trie-branches trie)))
           (when node
  
positive.code: ;             (return-from remove-seq nil))
  ;         (remove-seq symbol (subseq seq 1) count)))
  
  ; Node or symbol level
  
  (defun leafp (trie)
      (car (trie-branches trie)))
  
negative.code:         (if (null symbol)
              (return-from find-seq nil)
              (find-seq symbol (subseq seq 1)))))
  
  ; (defun remove-seq (trie seq &optional (count 1))
  ;     "Remove a sequence from trie"
  