anchor.diff:    ((strings :initform nil)
      (baseline :initform 0)
      (max-height :initform 0)
  -   (start-x :initarg :start-x
  -	    :initform 0)
  -   (start-y :initarg :start-y
  -	    :initform 0)
  +   (start-x :initarg :start-x)
  +   (start-y :initarg :start-y)
      (end-x)
      (end-y)))
  -
  -(defmethod initialize-instance :after ((record text-displayed-output-record) &rest args)
  -  (declare (ignore args))
  -  (with-slots (start-x start-y end-x end-y) record
  -    (setq end-x start-x
  -	  end-y start-y)))
   
   (defun text-displayed-output-record-p (x)
     (typep x 'text-displayed-output-record))
  
positive.code: (defmethod add-character-output-to-text-record ((text-record text-displayed-output-record)
  						character text-style width height
  						new-baseline)
    (with-slots (strings baseline max-height end-x) text-record
      (setq baseline new-baseline
  	  strings (nconc strings (list (list end-x text-style (make-string 1 :initial-element character))))
  	  end-x (+ end-x width)
  	  max-height (max max-height height)
  	  )))
  
  (defmethod add-string-output-to-text-record ((text-record text-displayed-output-record)
  					     string start end text-style width height
  
negative.code:       (multiple-value-bind (width height ignore1 ignore2 baseline)
  	  (text-size medium string)
  	(declare (ignore ignore1 ignore2))
  	(if (not (slot-boundp trec 'start-y))
  	    (with-slots (start-x start-y end-x end-y) trec
  	      (multiple-value-bind (cx cy) (stream-cursor-position stream)
  		(setq start-x cx
  		      start-y cy
  		      end-x cx
  		      end-y cy))))
  	(add-string-output-to-text-record trec string start end
  					  (medium-text-style medium)
  					  width height baseline))))
  