anchor.diff:  
   (defgeneric transactional-slots-using-class (object class)
     (declare (optimize speed))
  -  (:documentation "Return a list of slot-definitions to serialize.
  +  (:documentation "Return a list of transactional slot-definitions.
      The default calls compute slots with class")
     (:method ((object t) (class transactional-class))
  -    (remove '%lock (class-slots class) :key (lambda (obj)
  -					      (slot-value obj 'sb-pcl::name)))))
  +    (remove '%lock (remove 'requires-transaction
  +			   (class-slots class) :key (lambda (obj)
  +						      (slot-value obj 'sb-pcl::name)))
  +	    :key (lambda (obj)
  +						      (slot-value obj 'sb-pcl::name)))))
   
   (defmethod transactional-slot-p ((object transactional-object) slot-name)
     (some (lambda (slot)
  
positive.code:     (loop for (version . object-copy) being the hash-values of (objects transaction)
         using (hash-key object)
         when (not (equalp (transactional-object-version object) version))
         do (error "~A is not valid ~A ~A" transaction (object-version object) version))))
  
  (defmethod commit-transaction ((transaction transaction))
    (let ((*transaction* nil))
  
negative.code:    (parent :initarg :parent
  	   :reader parent
  	   :initform nil
  	   :documentation "The parent transaction")
     (status :initform :new
  	   :accessor status
  	   :documentation "The transaction status. May be :new, :commited, :failed, etc")))
  
  (defmethod commited-p ((transaction transaction))
    (equalp (status transaction) :commited))
  