anchor.diff:    (check-type node node)
     (check-type property-name property-name)
     (or (find-transition node property-name)
  -      (aconsf (%node-transitions node) property-name
  -              (make-node :mold (%node-mold node)
  +      (aconsf (node-transitions node) property-name
  +              (make-node :mold (node-mold node)
                            :properties (cons property-name
  -                                           (%node-properties node))))))
  +                                           (node-properties node))))))
   
   (defun ensure-mold (parents properties)
     "Returns the node with properties PROPERTIES of the mold for PARENTS,
  
positive.code:   (check-list-type parents object)
    (check-list-type properties property-name)
    (let ((mold (ensure-toplevel-mold parents)))
      (do* ((node (%mold-initial-node mold)
                  (ensure-transition node (car props-left)))
            (props-left properties (cdr properties)))
          ((null props-left) node))))
  
  ;;;
  
negative.code: node-transitions of a `node'."
    '(cons property-name node))
  
  (deftype mold ()
    "A union of NODE and MOLT-TOP, mainly here for convenience:
    (typep (ensure-mold <parents> <properties>) 'mold) => T"
    '(or node mold-top))
  
  (defun make-mold (parents)
    (aprog1 (%make-mold parents)
      (setf (mold-top-initial-node it)
            (make-node :mold it))))
  
  (macrolet ((define-node-mold-function (name inner docstring)
               `(defun ,name (mold) ,docstring
                  (etypecase mold
                    (mold-top (,inner mold))
                    (node (,name (node-mold mold)))))))
    (define-node-mold-function mold-parents mold-top-parents
      "Returns the parents of MOLD, which can be either a `mold' or a `node'.")
    (define-node-mold-function mold-hierarchy mold-top-hierarchy
      "Returns the hierarchy list of MOLD, which can be either a `mold' or a `node'.")
    (define-node-mold-function mold-sub-molds mold-top-sub-molds
      "Returns the cached child molds of MOLD, which can be either a `mold' or a `node'."))
  
  (defun mold-properties (mold)
    "Returns the properties of MOLD, which should be a `node'."
    (if (typep mold 'node)
        (node-properties mold)
        (error 'type-error :datum mold :expected-type 'node)))
  
  (defvar *molds* (make-hash-table :test 'equal)
  