anchor.diff:  (deftype function-symbol ()
     `(and symbol (satisfies fboundp)))
   
  -(define-class entry-accessors ()
  -  ((nodes '()
  -          :type list
  -          :documentation "The list of nodes that access an entry.")
  -   (last-access (local-time:now)
  -                :type (or local-time:timestamp string) ; Support `string' for easier deserialization.
  -                :documentation "The last access to the corresponding entry by
  -any owner.  It's useful to keep this access stored here so that when an entry
  -goes owner-less, we can still consult the last time it was accessed."))
  -  (:accessor-name-transformer #'class*:name-identity)
  -  (:export-accessor-names-p t)
  -  (:export-class-name-p t)
  -  (:documentation "The value corresponding to en `entry' key in the history
  -`entries' table."))
  -
  -;; TODO: Store data-last-access in entry (max of all last-accesses) so that we
  -;; keep this information even for node-less entries.
   (define-class entry ()
     ((history nil
               :type (or null history-tree)
  
positive.code:         (forward history (1- count))))
      (values history (current owner))))
  
  (defun find-accessors (history data)
    "Return the entry-accessors matching DATA."
    (cl-custom-hash-table:with-custom-hash-table
      (let* ((new-entry (make-entry history data)))
        (gethash new-entry (entries history)))))
  
  (export 'find-nodes)
  (defun find-nodes (history data)
    "Return the nodes matching DATA."
    (let ((accessors (find-accessors history data)))
      (when accessors
        (nodes accessors))))
  
  (declaim (ftype (function (t owner) (or null node)) find-child))
  (defun find-child (data owner) ; TODO: Generalize?
  
negative.code:                              :documentation "Must be one of the `owners' keys.")
     (entries (make-entry-hash-table)
              :type hash-table
              :documentation "Both the key and the value are an `entry', so that
  we can access the actual object from a given piece of data.
  Indeed, with custom hash table the key that is store (here the entry) is not
  necessarily identical to the one used in `gethash'.  So storing the entry as a
  value gives us access to to the actual object.")
     (key 'identity
          :type function-symbol
          :documentation "The result of this function is passed to `test'
  