anchor.diff:         (lambda (node)
            (disown owner node))
          (nodes owner)))
  -    ;; TODO: Garbage-collect owner-less branch.
  -    ;;
  -    ;; Delete nodes when whole branch is owner-less.  Indeed, otherwise we would
  -    ;; lose information.  It's better to be as "immutable" as possible.
  +    ;; Delete nodes only when whole branch is owner-less.  Indeed, otherwise we would
  +    ;; lose information for other owners.  It's better to be as "immutable" as possible.
       ;;
       ;; If we want to "free" disowned nodes or edit a given owner's history, the
       ;; best approach is to copy its owned branches to new branches that are
       ;; directly connected to the root.
  +    (delete-disowned-branch-nodes history owner)
       owner))
   
   
  
positive.code: ;; TODO: Is "Shared history tree" a better name than "Global history tree"?
  
  ;; TODO: Turn unique defmethod to defuns.
  ;; TODO: Add forward and back functions to unowned nodes.
  ;; TODO: Thread safe?
  
  ;; TODO: Should we have different functions for finding nodes vs. "owned nodes",
  ;; or pass an option as key argument?
  
  
negative.code:               new-entry))))))
  
  (define-class history-tree ()           ; TODO: Rename `history'?
    ((owners (error "Owners need be initialized")
             :type hash-table
             :documentation "The key is an owner identifier (an artitrary balue),
  the value is an `owner'.")
  