anchor.diff:  expects its stroke to cover a single-object non-character buffer
   region, which will be presented with its appropriate presentation
   type (found via `presentation-type-of') to generate output."
  -  (let (output-record)
  +  (let (output-record
  +	(widths (make-array 2 :initial-contents (list 0 0)))
  +	(parts (list 0 1)))
       #'(lambda (stream view stroke cursor-x cursor-y
                  default-drawing-fn)
           (declare (ignore default-drawing-fn))
  
positive.code:                                 (+ cursor-x width) (+ cursor-y height
                                                        (stream-vertical-spacing stream)))
                (replay output-record stream)
                (record-stroke stroke cursor-x cursor-y (+ width cursor-x)
                               (+ (if (zerop height)
                                      (text-style-height (medium-text-style stream) stream)
                                      height)
  
negative.code:   "Calculate the position in device units of `offset' in
  `stroke', relative to the starting position of `stroke'. `Offset'
  is an absolute offset into the buffer of `view',"
    (let ((string (in-place-buffer-substring
  		 (buffer view) (cache-string view)
  		 (stroke-start-offset stroke) offset)))
      (loop with pos = (- offset (stroke-start-offset stroke))
  	  for width across (stroke-widths stroke)
  	  for next upfrom 1
  	  for (start end object) in (stroke-parts stroke)
  	  when (and object (= pos end))
  	    do (return (aref (stroke-widths stroke) next))
  	  when (<= start pos end)
  	    do (return (+ width
  			  (text-size stream string
  				     :start start
  				     :end pos
  				     :text-style (merge-text-styles
  						  (face-style
  						   (drawing-options-face
  						    (stroke-drawing-options stroke)))
  						  (medium-merged-text-style (sheet-medium stream)))))))))
  
  (defgeneric offset-to-screen-position (pane view offset)
    (:documentation "Returns the position of offset as a screen
  