anchor.diff:  ;; types
   ;; ---------------------------------------------------------------------------------------------------------------------
   
  -(deftype node-unloaded () `(eql :unloaded))
  -
  -(deftype node-loaded () `(or (eql :loaded)
  +(deftype object-unloaded () `(eql :unloaded))
  +
  +(deftype object-loaded () `(or (eql :loaded)
   			     (eql :changed)
   			     (eql :new)))
   
  -(deftype node-state () `(or node-unloaded
  -			   node-loaded))
  +(deftype node-state () `(or object-unloaded
  +			   object-loaded))
   
   (defclass persistent-red-black-object ()
     ((state :type node-state :initform :new :initarg :state :accessor state) 
  
positive.code:   (add-changed-object *rb-transaction* node)
    (let ((data (rb-make-data (tree *rb-transaction*) :contents value)))
      (call-next-method data node)))
  
  (defmethod parent ((node persistent-red-black-node))
    (require-rb-transaction)
  
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)))
  