anchor.diff:     (children '()
                :documentation "List of nodes.")
      (bindings (make-hash-table)
  -             :documentation "The key is an owner, the value is a
  +             :documentation "The key is an `owner', the value is a
   `binding'.  This slot also allows us to know to which owner a node belongs.")
      (data nil
            :type t
  
positive.code: (defun make ()
    (make-instance 'history-tree))
  
  (declaim (ftype (function (history-tree t) owner-header) set-current-owner))
  (defun set-current-owner (history owner)
    "OWNER is arbitrary data representing an owner, it's not a `owner-header' object."
    (let ((header (gethash owner (owners history))))
      (unless header
        (setf (gethash owner (owners history)) (make-instance 'owner-header)))
      (setf (current-owner-header history)
            (gethash owner (owners history)))))
  
  (declaim (ftype (function (history-tree) node) current-owner-node))
  (defun current-owner-node (history)
    (and (current-owner-header history)
         (current (current-owner-header history))))
  
  (deftype positive-integer ()            ; TODO: Remove if unused.
    `(integer 1 ,most-positive-fixnum))
  
  (deftype non-negative-integer ()        ; TODO: Remove if unused.
  
negative.code:   (:accessor-name-transformer #'class*:name-identity)
    (:documentation "The relationship between an owner and the current node."))
  
  (define-class owner ()
    ;; TODO: Add slot pointing to history an owner belongs to?
    ((origin nil ; TODO: Rename to `root'?  Not to be confused with the htree root, but maybe it's convenient to have the same method name.
             :type (or null node)
             :documentation "The first node created for this owner.")
  