anchor.diff:    (error "I don't understand RECOMPUTE-EXTENT-FOR-CHANGED-CHILD - mikemac"))
   
   (defmethod tree-recompute-extent ((record output-record))
  -  (with-slots (parent children x-min y-min x-max y-max) record
  +  (with-slots (parent children x1 y1 x2 y2) record
       (if (null children)
  -	(setq x-min 0
  -	      y-min 0
  -	      x-max 0
  -	      y-max 0)
  +	(setq x1 0
  +	      y1 0
  +	      x2 0
  +	      y2 0)
         (with-bounding-rectangle* (left top right bottom) (first children)
   	(loop for child in (rest children)
   	      do (with-bounding-rectangle* (l1 t1 r1 b1) child
  
positive.code:     (setq children (delete child children))))
  
  (defmethod clear-output-record ((record output-record))
    (with-slots (children x-min y-min x-max y-max) record
      (setq children nil
  	  x-min 0
  	  y-min 0
  	  x-max 0
  	  y-max 0)))
  
  (defmethod output-record-count ((record output-record))
    (length (output-record-children record)))
  
negative.code: 	 ,(compute-class-vars args))
         (defmethod initialize-instance :after ((graphic ,class-name) &rest args)
  	 (declare (ignore args))
  	 (with-slots (x1 y1 x2 y2
  		      stream ink clipping-region transformation
  		      line-style text-style
  		      ,@args) graphic
  	   (multiple-value-bind (lf tp rt bt) (progn ,@body)
  	     (setq x1 lf
  		   y1 tp
  		   x2 rt
  		   y2 bt))))
         (defmethod ,method-name :around ((stream stream-output-history-mixin) ,@args)
  	 (with-sheet-medium (medium stream)
  	   (let ((record (make-instance ',class-name
  