anchor.diff:    (setf (offset mark) (size (buffer mark))))
   
   (defgeneric beginning-of-buffer-p (mark)
  -  (:documentation "Return t if the mark is at the beginning of
  - the buffer, nil otherwise."))
  +  (:documentation "Return T if the mark is at the beginning of
  +the buffer, nil otherwise."))
   
   (defmethod beginning-of-buffer-p ((mark mark-mixin))
     (zerop (offset mark)))
   
   (defgeneric end-of-buffer-p (mark)
  -  (:documentation "Return t if the mark is at the end of the buffer, nil otherwise."))
  +  (:documentation "Return T if the mark is at the end of the
  +buffer, NIL otherwise."))
   
   (defmethod end-of-buffer-p ((mark mark-mixin))
     (= (offset mark) (size (buffer mark))))
   
   (defgeneric beginning-of-line-p (mark)
  -  (:documentation "Return t if the mark is at the beginning of the line (i.e., if the
  -character preceding the mark is a newline character or if the mark is
  -at the beginning of the buffer), nil otherwise."))
  +  (:documentation "Return T if the mark is at the beginning of
  +the line (i.e., if the character preceding the mark is a newline
  +character or if the mark is at the beginning of the buffer), NIL
  +otherwise."))
   
   (defmethod beginning-of-line-p ((mark mark-mixin))
     (or (beginning-of-buffer-p mark)
         (eql (object-before mark) #\Newline)))
   
   (defgeneric end-of-line-p (mark)
  -  (:documentation "Return t if the mark is at the end of the line (i.e., if the character
  -following the mark is a newline character, or if the mark is at the
  -end of the buffer), nil otherwise."))
  +  (:documentation "Return T if the mark is at the end of the
  +line (i.e., if the character following the mark is a newline
  +character, or if the mark is at the end of the buffer), NIL
  +otherwise."))
   
   (defmethod end-of-line-p ((mark mark-mixin))
     (or (end-of-buffer-p mark)
         (eql (object-after mark) #\Newline)))
   
   (defgeneric beginning-of-line (mark)
  -  (:documentation "Move the mark to the beginning of the line.  The mark will be
  - positioned either immediately after the closest preceding newline
  - character, or at the beginning of the buffer if no preceding newline
  - character exists. Returns mark."))
  +  (:documentation "Move the mark to the beginning of the line.
  +The mark will be positioned either immediately after the closest
  +receding newline character, or at the beginning of the buffer if
  +no preceding newline character exists. Returns `mark'."))
   
   (defmethod beginning-of-line :around (mark)
     (call-next-method)
  
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:     (setf (offset mark) offset)))
  
  (defgeneric buffer-line-number (buffer offset)
    (:documentation "Return the line number of the offset.  Lines
  are numbered from zero."))
  
  (defmethod buffer-line-number ((buffer standard-buffer) (offset integer))
    (loop for i from 0 below offset
  	count (eql (buffer-object buffer i) #\Newline)))
  
  (defgeneric buffer-column-number (buffer offset)
    (:documentation "Return the column number of the offset. The
  column number of an offset is the number of objects between it
  and the preceding newline, or between it and the beginning of the
  buffer if the offset is on the first line of the buffer."))
  
  (defmethod buffer-column-number ((buffer standard-buffer) (offset integer))
    (loop for i downfrom offset
  