anchor.diff:  	       (setf (end-graphics-state record)
   		     (medium-graphics-state stream))
   	       (add-to-map parent-cache record  unique-id id-test all-new)))
  -	    ((or (setq state-mismatch
  -		       (not (state-matches-stream-p (start-graphics-state
  -						     record)
  -						    stream)))
  -		 (not (funcall cache-test
  -			       cache-value
  -			       (output-record-cache-value record))))
  +	    ((or (setq state-mismatch (not (state-matches-stream-p (start-graphics-state record) stream)))
  +		 (not (funcall cache-test cache-value (output-record-cache-value record))))
   	     (when *trace-updating-output*
  -	       (format *trace-output* "~:[cache test~;stream state~] ~S~%"
  -		       state-mismatch record))
  +	       (format *trace-output* "~:[cache test~;stream state~] ~S~%" state-mismatch record))
   	     (let ((*current-updating-output* record))
   	       (setf (start-graphics-state record)
   		     (medium-graphics-state stream))
  
positive.code: 
  (defvar *no-unique-id* (cons nil nil))
  
  (defmethod invoke-updating-output ((stream updating-output-stream-mixin)
  				   continuation
  				   record-type
  
negative.code: ;;;programmer forcing all new output.
  
  (defun state-matches-stream-p (state stream)
    (multiple-value-bind (cx cy) (stream-cursor-position stream)
      (with-sheet-medium (medium stream)
        ;; Note: We don't match the y coordinate.
        (match-output-records state :cursor-x cx))))
  
  (define-protocol-class updating-output-record (output-record))
  
  