anchor.diff:      (aref fact-vector (1- (length fact-vector)))))
   
   (defun token-push-fact (token fact)
  -  (vector-push-extend fact (slot-value token 'facts)))
  +  (vector-push-extend fact (slot-value token 'facts))
  +  token)
   
   (defun token-pop-fact (token)
     (with-slots ((fact-vector facts)) token
  
positive.code:   ((facts :initform
            (make-array 0 :adjustable t :fill-pointer t)
            :reader token-facts)))
  
  (defmethod initialize-instance :after ((self token) &key fact)
    (unless (null fact)
      (vector-push-extend fact (slot-value self 'facts)))
    self)
  
  (defclass add-token (token) ())
  (defclass remove-token (token) ())
  
negative.code: (defun replicate-token (token)
    (let ((new-token (make-instance (class-of token))))
      (with-slots ((new-fact-vector facts)) new-token
        (dotimes (i (length existing-fact-vector))
          (token-push-fact new-token (aref existing-fact-vector i))))
      new-token))
  
  (defun make-add-token (fact)
    (token-push-fact (make-instance 'add-token) fact))
  
  (defun make-remove-token (fact)
    (token-push-fact (make-instance 'remove-token)))
  
  