anchor.diff:    (add-changed-object *rb-transaction* node)
     (let ((data (rb-make-data (tree *rb-transaction*) :contents value)))
       (call-next-method data node)))
  +
  +(defmethod contents :around ((data persistent-red-black-data))
  +  (require-rb-transaction)
  +  (prb-load-data (tree *rb-transaction*) data)
  +  (call-next-method))
   
   (defmethod parent ((node persistent-red-black-node))
     (require-rb-transaction)
  
positive.code:      until (= 0 (length changes))
       do (vector-pop changes)))
  
  (defgeneric loaded-p (node)
    (:method ((node persistent-red-black-node))
      (typep (state node) 'node-loaded)))
  
  (defgeneric ancestor-p (node possible-ancestor)
    (:method ((node persistent-red-black-node) (possible-ancestor persistent-red-black-node))
  
negative.code:     (prb-stash-node tree (location left) (location right) color key (when data (location data)))))
  
  (defmethod prb-load-data ((tree persistent-red-black-tree) (data persistent-red-black-data))
    (unless (loaded-p data)
      (setf (contents data) (prb-fetch-data tree (location data)))))
  
  (defmethod prb-save-data ((tree persistent-red-black-tree) (data persistent-red-black-data))
    (prb-stash-data tree (contents data)))
  