anchor.diff:        `(let ((,it (make-readtable-iterator ,readtable)))
   	 (macrolet ((,name () `(funcall ,',it)))
   	   ,@body)))))
  +
   
   #-allegro
   (progn
  
positive.code: (declaim (inline %standard-readtable))
  (defun %standard-readtable ()
    #+sbcl+sb-reader sb-reader:*standard-readtable*
    #+clozure ccl::%initial-readtable%
    #-(or sbcl+sb-reader clozure)
    (copy-readtable nil))
  
  #+sbcl+sb-reader
  (defmacro %with-readtable-iterator ((name readtable) &body body)
    `(sb-reader:with-readtable-iterator (,name ,readtable) ,@body))
  
  #+(or (and sbcl (not sbcl+sb-reader)) clozure)
  (progn
    #+sbcl
    (defun make-readtable-iterator (readtable)
      (let ((char-macro-array (sb-impl::character-macro-array readtable))
  	  (char-macro-ht    (sb-impl::character-macro-hash-table readtable))
  
negative.code: 
  (in-package :editor-hints.named-readtables)
  
  #-(or sbcl clozure)
  (eval-when (:compile-toplevel)
    (warn "~A hasn't been ported to ~A; you're likely to get a compiler error" 
  	(package-name *package*) (lisp-implementation-type)))
  