anchor.diff:  (defgeneric prb-close-storage (storage)
     (:documentation "Release storage from use; further load & save operations cannot succeed without a subsequent open call"))
   
  -(defgeneric prb-load (storage id)
  -  (:documentation "Load the indicated object from storage (usually a node or tree)"))
  -
  -(defgeneric prb-save (storage id object)
  +(defgeneric prb-load (storage transaction location)
  +  (:documentation "Load the object at the indicated location from storage (usually a node or tree)"))
  +
  +(defgeneric prb-save (storage transaction location object)
     (:documentation "Save the indicated object in storage (usually a node or tree); 
  -    return a reference to its id within the storage"))
  +    return a reference to its location within the storage"))
   
   (defgeneric prb-commit (transaction-or-tree)
     (:documentation "Orchestrate the persisting of all changes to a tree, including all changed nodes"))
  
positive.code: 
  (defgeneric id-for-object (transaction obj))
  
  (defgeneric add-changed-node (transaction node))
  
  (defgeneric add-opened-node (transaction node id))
  
  (defgeneric prb-open-storage (storage)
    (:documentation "Prepare storage for use; after this call load & save operations should succeed"))
  
negative.code: 			 #'<))
  	(storage (storage (tree *rb-transaction*))))
      (loop for id in ids
         do (prb-save storage *rb-transaction* id (object-for-id *rb-transaction* id)))
      (when (new-root *rb-transaction*)
            (setf (root storage) (new-root *rb-transaction*))
        	  (setf (slot-value (tree *rb-transaction*) 'root) (new-root *rb-transaction*)))))