anchor.diff:    (:accessor-name-transformer #'class*:name-identity)
     (:documentation "Starting point of the global history tree data structure."))
   
  +(export-always '+default-owner+)
   (defparameter +default-owner+ "default-owner")
   
   (export 'make)
  
positive.code: 
  
  (export-always 'add-child)
  (defmethod add-child (data (history history-tree) &key creator)
    "Create or find a node holding DATA and set current node to it.
  Return the (possibly new) current node.
  
  
negative.code: If there is no current node, this creates the `origin' node of the current owner
  and also sets `current' to it.  If CREATOR is provided, set the `creator' slot
  of current owner and the `origin' parent is set to the current node of
  `creator-identifier'."
    (let ((owner (current-owner history))
          (creator-owner (and creator-identifier (owner history creator-identifier))))
      (when (and (current owner)
                 creator-identifier)
        (error "Cannot specify creator-identifier on owner ~s that already has nodes" owner))
      (when (null (current owner))
        (when (and creator-owner (null (current creator-owner)))
          (error "Cannot add node to empty owner with node-less creator ~s" creator-owner)))
  
      (cond
        ((null (current owner))
         (let* ((creator-node (and creator-owner (current creator-owner)))
                (new-node (make-node :entry (add-entry history data)
                                     :parent creator-node)))
           (when creator-owner
             (push new-node (children creator-node)))
           (setf (origin owner) new-node
                 (creator owner) creator-identifier)
           (visit history new-node)))
  
        ((not (data-equal-entry-p data (entry (current owner))))
  