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: 	(when (not (typep bp-start 'fixed-buffer-pointer))
  	  (setf bp-start (change-class bp-start 'fixed-buffer-pointer))))))
  
  (defmethod end-state ((extent extent))
    (if (typep (bp-end extent) 'fixed-buffer-pointer)
        :open
        :closed))
  
  (defmethod (setf end-state) (new-val (extent extent))
    (with-slots (bp-end)
  
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 
  