anchor.diff:    (declare (type multi-buffer buffer)
              (type fixnum n))
     (incf (multi-buffer-index buffer) n))
  +
  +(defun n-buffer-backward (buffer n)
  +  "moves the buffer n characters backward"
  +  (declare (type multi-buffer buffer)
  +           (type fixnum n))
  +  (decf (multi-buffer-index buffer) n))
   
   (defun buffer-unused-available-content (buffer)
     "yields all content in the buffer which is after the current index"
  
positive.code:   (push (multi-buffer-string buffer) (multi-buffer-pstrings buffer))
    (setf (multi-buffer-string buffer) string))
  
  (declaim (inline previous-buffer-content-for-index previous-buffer-content-from-index char-for-index current-char mark-buffer peek-forward n-peek-forward buffer-forward n-buffer-forward buffer-unused-available-content copy-marked-region forward-buffer-below forward-buffer-while-not))
  
  (deftype ascii-char ()
    '#.(if (and (every
  
negative.code:           (t tree))))
  
  (defmacro define-parser-stages ((parser-state-var header-info-var buffer-var) name &rest stages)
    ;; (setf stages
    ;;       (loop for stage in stages
    ;;          collect `(,(first stage)
    ;;                     (break "entering stage ~A" ,(first stage))
    ;;                     ,@(rest stage))))
    (let ((expanded-stages nil))
      (loop for stage in (reverse stages)
         do (loop for es in expanded-stages ;; does this direction induce continuously expanded stages? (it should be irrelevant, yet still)
  