anchor.diff:  ;; I require rather fine-grained control over iterator state -- simple co-routine wouldn't do (I guess)
   
   (defgeneric next-val (iterator))
  +(defgeneric peek-val (iterator))
   
   (defclass raw-char-iterator ()
     ((line-num :initform 0)
  
positive.code: (defun mk-trigraph-resolved-iterator (sub-iter)
    (make-instance 'trigraph-resolved-iterator :sub-iter sub-iter))
  
  ;; (let ((trigraph-map '((#\= . #\#) (#\( . #\[) (#\/ . #\\) (#\) . #\]) (#\' . #\^)
  ;; 		      (#\< . #\{) (#\! . #\|) (#\> . #\}) (#\- . #\~))))
  ;;   (defmethod next-val ((iter trigraph-resolved-iterator))
  
negative.code:   (pos-in-line (slot-value iter 'sub-iter)))
  (defmethod file-name ((iter feeding-iterator))
    (file-name (slot-value iter 'sub-iter)))
  
  (defmethod peek-val ((iter feeding-iterator))
    (with-slots (sub-iter) iter
      (peek-val sub-iter)))
  
  (defmethod peek-val ((iter raw-char-iterator))
    (with-slots (stream) iter
      (peek-char nil stream nil)))
  
  (defun mk-raw-char-iter (fname-or-stream)
    (if (typep fname-or-stream 'stream)
  