anchor.diff:    (coerce (buffer-sequence buffer start end) 'string))
   
   (defgeneric object-before (mark)
  -  (:documentation "Return the object that is immediately before the mark.  If mark is at
  -the beginning of the buffer, a no-such-offset condition is signaled.
  -If the mark is at the beginning of a line, but not at the beginning
  -of the buffer, a newline character is returned."))
  +  (:documentation "Return the object that is immediately before
  +the mark.  If mark is at the beginning of the buffer, a
  +`no-such-offset' condition is signaled.  If the mark is at the
  +beginning of a line, but not at the beginning of the buffer, a
  +newline character is returned."))
   
   (defmethod object-before ((mark mark-mixin))
     (buffer-object (buffer mark) (1- (offset mark))))
   
   (defgeneric object-after (mark)
  -  (:documentation "Return the object that is immediately after the mark.  If mark is at
  -the end of the buffer, a no-such-offset condition is signaled.  If
  -the mark is at the end of a line, but not at the end of the buffer, a
  -newline character is returned."))
  +  (:documentation "Return the object that is immediately after
  +the mark.  If mark is at the end of the buffer, a
  +`no-such-offset' condition is signaled.  If the mark is at the
  +end of a line, but not at the end of the buffer, a newline
  +character is returned."))
   
   (defmethod object-after ((mark mark-mixin))
     (buffer-object (buffer mark) (offset mark)))
   
   (defgeneric region-to-sequence (mark1 mark2)
  -  (:documentation "Return a freshly allocated sequence of the objects after mark1 and
  -before mark2.  An error is signaled if the two marks are positioned
  -in different buffers.  If mark1 is positioned at an offset equal to
  -or greater than that of mark2, an empty sequence is returned.  It is
  -acceptable to pass an offset in place of one of the marks."))
  +  (:documentation "Return a freshly allocated sequence of the
  +objects after `mark1' and before `mark2'.  An error is signaled
  +if the two marks are positioned in different buffers.  If mark1
  +is positioned at an offset equal to or greater than that of
  +`mark2', an empty sequence is returned.  It is acceptable to pass
  +an offset in place of one of the marks. This function calls
  +`buffer-sequence' with the appropriate arguments."))
   
   (defmethod region-to-sequence ((mark1 mark-mixin) (mark2 mark-mixin))
     (assert (eq (buffer mark1) (buffer mark2)))
  
positive.code: 	count (eql (buffer-object buffer offset) #\Newline)))
  
  (defgeneric mark< (mark1 mark2)
    (:documentation "Return t if the offset of mark1 is strictly less than that of mark2.
  An error is signaled if the two marks are not positioned in the same
  buffer.  It is acceptable to pass an offset in place of one of the
  marks"))
  
  (defmethod mark< ((mark1 mark-mixin) (mark2 mark-mixin))
    (assert (eq (buffer mark1) (buffer mark2)))
  
negative.code:     (delete-buffer-range (buffer mark2) offset1 (- offset2 offset1))))
  
  (defgeneric buffer-object (buffer offset)
    (:documentation "Return the object at the offset in the buffer.
  The first object has offset 0. If `offset' is less than zero or
  greater than or equal to the size of the buffer, a
  `no-such-offset' condition is signaled."))
  
  (defmethod buffer-object ((buffer standard-buffer) offset)
    (assert (<= 0 offset) ()
  