anchor.diff:        (setq end (length string)))
     (let ((length (max 0 (- end start))))
       (cond
  -     ((= length 1)
  -      (add-character-output-to-text-record text-record
  -                                           (aref string start)
  -                                           text-style
  -                                           string-width height new-baseline))
  -     (t
  -      (setq string (make-array length :displaced-to string ; XXX
  -			       :displaced-index-offset start
  -			       :element-type (array-element-type string)))
  -      (with-slots (strings baseline width max-height start-y end-x end-y)
  -          text-record
  -	(setq baseline (max baseline new-baseline)
  -	      strings (nconc strings
  -			     (list (list end-x text-style
  -					 (make-array (length string)
  -						     :initial-contents string
  -						     :element-type 'character
  -						     :adjustable t
  -						     :fill-pointer t))))
  -	      end-x (+ end-x string-width)
  -	      max-height (max max-height height)
  -	      end-y (max end-y (+ start-y max-height))
  -	      width (+ width string-width)))
  -      (tree-recompute-extent text-record)))))
  +      ((= length 1)
  +       (add-character-output-to-text-record text-record
  +                                            (aref string start)
  +                                            text-style
  +                                            string-width height new-baseline))
  +      (t
  +       (setq string (make-array length :displaced-to string ; XXX
  +                                :displaced-index-offset start
  +                                :element-type (array-element-type string)))
  +       (with-slots (strings baseline width max-height start-y end-x end-y)
  +           text-record
  +         (nconcf strings
  +                 (list (make-instance
  +                        'styled-string
  +                        :start-x end-x
  +                        :text-style text-style
  +                        :ink (first *drawing-options*) ; XXX TDO
  +                        :clipping-region (second *drawing-options*)
  +                        :string (make-array (length string)
  +                                            :initial-contents string
  +                                            :element-type 'character
  +                                            :adjustable t
  +                                            :fill-pointer t))))
  +         (setq baseline (max baseline new-baseline)
  +               end-x (+ end-x string-width)
  +               max-height (max max-height height)
  +               end-y (max end-y (+ start-y max-height))
  +               width (+ width string-width)))
  +       (tree-recompute-extent text-record)))))
   
   (defmethod text-displayed-output-record-string
       ((record standard-text-displayed-output-record))
  
positive.code: 
  (defgeneric erase-output-record (record stream &optional errorp))
  
  (defgeneric copy-textual-output-history (window stream &optional region record))
  
  ;;; 16.4.3. Text Output Recording
  (defgeneric stream-text-output-record (stream text-style))
  
  
negative.code:    "Returns the output record that is the parent of RECORD, or NIL if
  RECORD has no parent."))
  
  (defgeneric (setf output-record-parent) (parent record)
    (:documentation "Non-standard function."))
  
  (defgeneric replay-output-record (record stream
                                    &optional region x-offset y-offset)
    (:documentation "Displays the output captured by RECORD on the
  