anchor.diff:        (unless equal
           (setf (offset begin-mark) buffer-start)
           (delete-region begin-mark (stream-scan-pointer stream))
  -        (insert-sequence begin-mark new-contents))
  -      (update-syntax (buffer drei) (syntax (buffer drei)))
  +        (insert-sequence begin-mark new-contents)
  +        (update-syntax (buffer drei) (syntax (buffer drei)))
  +        ;; Make the buffer reflect the changes in the array.
  +        (synchronize-input-buffer-array stream))
         (display-drei drei)
         (when (or rescan (not equal))
  -        (queue-rescan stream)))))
  +        (queue-rescan stream))
  +      ;; We have to return "the position in the input buffer". We
  +      ;; return the insertion position.
  +      buffer-start)))
   
   (defun present-acceptably-to-string (object type view for-context-type)
     "Return two values - a string containing the printed
  
positive.code:   ;; NOTE: This is very slow (consing up a whole new array - twice!),
    ;; please do not use it unless you want to be compatible with other
    ;; editor substrates. Use the Drei buffer directly instead.
    (or (input-buffer-array stream)
        (setf (input-buffer-array stream)
              (with-accessors ((buffer buffer)) (drei-instance stream)
                (let* ((array (buffer-sequence buffer 0 (size buffer))))
                  (make-array (length array)
                              :fill-pointer (length array)
                              :initial-contents array))))))
  
  (defmethod replace-input ((stream drei-input-editing-mixin) (new-input array)
  			  &key
  
negative.code:   (declare (ignore start-position))
    ;; We ignore `start-position', because it would be more work to
    ;; figure out what to redraw than to just redraw everything.
    ;; We assume that this function is mostly called from non-Drei-aware
    ;; code, and thus synchronise the input-editor-array with the Drei
    ;; buffer before redisplaying.
    (update-drei-buffer stream)
    (display-drei (drei-instance stream)))
  
  (defmethod erase-input-buffer ((stream drei-input-editing-mixin)
                                 &optional (start-position 0))
    (declare (ignore start-position))
    ;; No-op, just to save older CLIM programs from dying.
    nil)
  
  ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
  ;;; 
  