anchor.diff:  ;; TODO: Is "Shared history tree" a better name than "Global history tree"?
   
   ;; TODO: Add forward and back functions to unowned nodes.
  -
  -;; TODO: Custom hash?  We'd need an "update-entry" function that replace the key
  -;; in `entries' and loops over all nodes to replace their entry.
  -;; Better: Box the entry.
  -;; Then we can remove the `test' argument and just use it in `make'.
  -;; We can also rename `data' to `entry'.  Unless boxed?
  -
  +;; TODO: Default owner?  Makes sense for users who don't care about multiple owners.
   ;; TODO: Thread safe?
   
   (defmacro export-always (symbols &optional (package nil package-supplied?)) ; From serapeum.
  
positive.code:     ;; directly connected to the root.
      owner))
  
  (eval-when (:compile-toplevel :load-toplevel :execute)
    (export 'find-node))
  (defun find-node (item tree &key (key #'identity) (test #'equal))
    "Find a tree node matching ITEM (by TEST) in TREE and return it.
  TREE can be a `history' or a `node'. "
    (block search
      (do-tree (node tree)
        (when (funcall test item (funcall key node))
          (return-from search node)))))
  
  (eval-when (:compile-toplevel :load-toplevel :execute)
    (export 'remove-node))
  (defun remove-node (item tree &key (key #'identity) (test #'equal))
    "Return all the nodes from TREE that didn't match ITEM (measured by TEST).
  TREE can be a `history' or a `node'."
    (let (result)
      (do-tree (node tree)
        (unless (funcall test item (funcall key node))
          (push node result)))
      result))
  
  
negative.code:     (current owner)))
  
  (export 'add-children)
  (defmethod add-children (children-data (owner owner))
    "Add CHILDREN-DATA to the `owner''s node children.
  Each child is added with `add-child'.
  Return the (maybe new) current node, which holds the last piece of data in
  `children-data'."
    (add-child (first children-data) owner)
    (if (rest children-data)
        (add-children (rest children-data) (back owner))
        (current owner)))
  
  (defmethod add-children (children-data (history history-tree))
    "Add CHILDREN-DATA to the HISTORY `current-owner''s node children.
  Each child is added with `add-child'.
  Return the (maybe new) current node, which holds the last piece of data in
  `children-data'.
  Return nil if there is no `current-owner'."
    (when (current-owner history)
      (add-children children-data (current-owner history))))
  
  (export-always 'map-tree)
  (defun map-tree (function tree &key flatten include-root ; TODO: Edit?  Unexport?
  