anchor.diff:    (make-buffer-stream-instance 'buffer-output-stream
                                  buffer point interactive-update-p))
   
  +(defmethod trivial-gray-streams::close ((stream buffer-output-stream) &key abort)
  +  (declare (ignore abort))
  +  (delete-marker (buffer-output-stream-marker stream))
  +  t)
  +
   (defun buffer-output-stream-point (stream)
  -  (make-point (buffer-output-stream-linum stream)
  -              (buffer-output-stream-charpos stream)))
  +  (marker-point (buffer-output-stream-marker stream)))
   
   (defmethod stream-element-type ((stream buffer-output-stream))
     'line)
   
   (defmethod trivial-gray-streams:stream-line-column ((stream buffer-output-stream))
  -  (buffer-output-stream-charpos stream))
  +  (marker-charpos (buffer-output-stream-marker stream)))
   
   (defun buffer-output-stream-refresh (stream)
     (when (buffer-output-stream-interactive-update-p stream)
  -    (display-buffer (buffer-output-stream-buffer stream))
  -    (dolist (window (get-buffer-windows (buffer-output-stream-buffer stream)))
  -      (point-set (buffer-output-stream-point stream) (window-buffer window))
  -      (redraw-display-window window t)))
  +    (let ((buffer (marker-buffer (buffer-output-stream-marker stream)))
  +          (point (marker-point (buffer-output-stream-marker stream))))
  +      (display-buffer buffer)
  +      (dolist (window (get-buffer-windows buffer))
  +        (point-set point (window-buffer window))
  +        (redraw-display-window window t))))
     nil)
   
   (defmethod trivial-gray-streams:stream-fresh-line ((stream buffer-output-stream))
  -  (unless (zerop (buffer-output-stream-charpos stream))
  +  (unless (zerop (marker-charpos (buffer-output-stream-marker stream)))
       (trivial-gray-streams:stream-terpri stream)))
   
   (defmethod trivial-gray-streams:stream-write-byte ((stream buffer-output-stream) byte)
  
positive.code: 
  (defmethod trivial-gray-streams:stream-write-char ((stream buffer-output-stream) char)
    (prog1 char
      (buffer-insert-char (buffer-output-stream-buffer stream)
                          (buffer-output-stream-linum stream)
                          (buffer-output-stream-charpos stream)
                          char)
      (if (char= char #\newline)
          (progn
            (incf (buffer-output-stream-linum stream))
            (setf (buffer-output-stream-charpos stream) 0))
          (incf (buffer-output-stream-charpos stream)))))
  
  (defun %write-string-to-buffer-stream (stream string start end &key)
    (let ((strings
           (split-string (subseq string start end)
                         #\newline)))
      (loop :for s :on strings :do
        (buffer-insert-line (buffer-output-stream-buffer stream)
                            (buffer-output-stream-linum stream)
                            (buffer-output-stream-charpos stream)
                            (car s))
        (incf (buffer-output-stream-charpos stream) (length (car s)))
        (when (cdr s)
          (buffer-insert-newline (buffer-output-stream-buffer stream)
                                 (buffer-output-stream-linum stream)
                                 (buffer-output-stream-charpos stream))
          (incf (buffer-output-stream-linum stream))
          (setf (buffer-output-stream-charpos stream) 0)))
      string))
  
  (defun %write-octets-to-buffer-stream (stream octets start end &key)
    (let ((octets (subseq octets start end)))
  
negative.code:   (%write-string-to-buffer-stream stream string start end))
  
  (defmethod trivial-gray-streams:stream-terpri ((stream buffer-output-stream))
    (prog1 (marker/insert-char (buffer-output-stream-marker stream)
                               #\newline)
      (buffer-output-stream-refresh stream)))
  
  (defmethod trivial-gray-streams:stream-finish-output ((stream buffer-output-stream))
    (buffer-output-stream-refresh stream))
  