anchor.diff:  
   (defmethod print-object  ((object insert-record) stream)
     (with-slots (offset objects) object
  -    (format stream "[offset: ~a objects: ~a]" offset objects)))
  +    (format stream "[offset: ~a inserted objects: ~a]" offset objects)))
  +
  +(defmethod print-object  ((object change-record) stream)
  +  (with-slots (offset objects) object
  +    (format stream "[offset: ~a changed objects: ~a]" offset objects)))
   
   (defmethod print-object  ((object compound-record) stream)
     (with-slots (records) object
  
positive.code:     (change-class record 'insert-record
                    :objects (buffer-sequence buffer offset (+ offset length)))
      (delete-buffer-range buffer offset length)))
  
  (defmethod flip-undo-record ((record compound-record))
    (with-slots (records) record
  
negative.code:     (push (make-instance 'insert-record
                           :buffer buffer :offset offset
                           :objects (buffer-sequence buffer offset (+ offset n)))
  	  (undo-accumulate buffer))))
  
  (defmethod (setf buffer-object) :before (new-object (buffer undo-mixin) offset)
    (unless (performing-undo buffer)
      (push (make-instance 'change-record
  			 :buffer buffer
  			 :offset offset
  			 :objects (buffer-sequence buffer offset (1+ offset)))
  	  (undo-accumulate buffer))))
  
  (defmacro with-undo ((get-buffers-exp) &body body)
  