anchor.diff:    (letf (((stream-recording-p stream) record)
   	 ((stream-drawing-p stream) draw))
       (funcall continuation stream)))
  -
  -(defmacro with-new-output-record ((stream
  -                                   &optional
  -                                   (record-type 'standard-sequence-output-record)
  -                                   (record nil record-supplied-p)
  -                                   &rest initargs)
  -                                  &body body)
  -  "Creates a new output record of type RECORD-TYPE and then captures
  -the output of BODY into the new output record, and inserts the new
  -record into the current \"open\" output record assotiated with STREAM.
  -    If RECORD is supplied, it is the name of a variable that will be
  -lexically bound to the new output record inside the body. INITARGS are
  -CLOS initargs that are passed to MAKE-INSTANCE when the new output
  -record is created.
  -    It returns the created output record.
  -    The STREAM argument is a symbol that is bound to an output
  -recording stream. If it is T, *STANDARD-OUTPUT* is used."
  -  (when (eq stream 't) (setq stream '*standard-output*))
  -  (check-type stream symbol)
  -  (unless record-supplied-p (setq record (gensym)))
  -  `(invoke-with-new-output-record ,stream
  -                                  #'(lambda (,stream ,record)
  -                                      (declare (ignorable ,stream ,record))
  -                                      ,@body)
  -                                  ',record-type
  -                                  ,@initargs))
   
   (defmethod invoke-with-new-output-record ((stream output-recording-stream)
                                             continuation record-type
  
positive.code: ;;; - When DRAWING-P is NIL, should stream cursor move?
  ;;;
  ;;; - :{X,Y}-OFFSET.
  
  ;;; Bug: (SETF OUTPUT-RECORD-POSITION) returns the record instead of
  ;;; the position. It is useful for debugging, but it is wrong.
  
negative.code:      &allow-other-keys))
  
  (defgeneric make-design-from-output-record (record))
  
  ;;; Macros
  (defmacro with-output-recording-options ((stream
  					  &key (record nil record-supplied-p)
  					       (draw nil draw-supplied-p))
  					 &body body)
    (when (eq stream 't) (setq stream '*standard-output*))
    (check-type stream symbol)
    (with-gensyms (continuation)
      `(flet ((,continuation  (,stream) ,@body))
         (declare (dynamic-extent #',continuation))
         (invoke-with-output-recording-options
          ,stream #',continuation
          ,(if record-supplied-p record `(stream-recording-p ,stream))
          ,(if draw-supplied-p draw `(stream-drawing-p ,stream))))))
  
  (defmacro with-new-output-record ((stream
                                     &optional
                                     (record-type ''standard-sequence-output-record)
                                     (record nil record-supplied-p)
                                     &rest initargs)
                                    &body body)
    "Creates a new output record of type RECORD-TYPE and then captures
  the output of BODY into the new output record, and inserts the new
  record into the current \"open\" output record assotiated with STREAM.
      If RECORD is supplied, it is the name of a variable that will be
  lexically bound to the new output record inside the body. INITARGS are
  CLOS initargs that are passed to MAKE-INSTANCE when the new output
  record is created.
      It returns the created output record.
      The STREAM argument is a symbol that is bound to an output
  recording stream. If it is T, *STANDARD-OUTPUT* is used."
    (when (eq stream 't) (setq stream '*standard-output*))
    (check-type stream symbol)
    (unless record-supplied-p (setq record (gensym)))
    `(invoke-with-new-output-record ,stream
                                    #'(lambda (,stream ,record)
                                        (declare (ignorable ,stream ,record))
                                        ,@body)
                                    ,record-type
                                    ,@initargs))
  
  (defmacro with-output-to-output-record
      ((stream
        &optional (record-type ''standard-sequence-output-record)
                  (record nil record-supplied-p)
        &rest initargs)
       &body body)
    "Creates a new output record of type RECORD-TYPE and then captures
  the output of BODY into the new output record. The cursor position of
  STREAM is initially bound to (0,0)
      If RECORD is supplied, it is the name of a variable that will be
  lexically bound to the new output record inside the body. INITARGS are
  CLOS initargs that are passed to MAKE-INSTANCE when the new output
  record is created.
      It returns the created output record.
      The STREAM argument is a symbol that is bound to an output
  recording stream. If it is T, *STANDARD-OUTPUT* is used."
    (when (eq stream 't) (setq stream '*standard-output*))
    (check-type stream symbol)
    (unless record-supplied-p (setq record (gensym "RECORD")))
    `(invoke-with-output-to-output-record
      ,stream
      #'(lambda (,stream ,record)
          (declare (ignorable ,stream ,record))
          ,@body)
      ,record-type
      ,@initargs))
  
  
  