anchor.diff:  	do (push extent (extents line))
   	finally (push extent (extents line))))
   
  +(defgeneric detach-extent (extent))
  +
   (defmethod detach-extent ((extent extent))
     (loop for line = (line (bp-start extent)) then (next line)
   	until (eq line (lines (bp-end extent)))
  
positive.code:   (setf (line (bp-start extent)) nil)
    (setf (line (bp-end extent)) nil))
  
  (defmethod start-state ((extent extent))
    (if (typep (bp-start extent) 'fixed-buffer-pointer)
        :closed
        :open))
  
  (defmethod (setf start-state) (new-val (extent extent))
    (with-slots (bp-start)
  
negative.code:    (bp-end :reader bp-end))
    (:documentation "A delimited region in a buffer.  The concept follows extents
    in XEmacs, though the interface is more in line with Common Lisp."))
  
  (defgeneric record-extent-lines (extent))
  
  (defmethod initialize-instance :after ((obj extent) 
  				       &key start-line 
  