anchor.diff:       (if (null *saved-readtable*)
          (let ((*saved-readtable* *readtable*)
                (*readtable* (copy-readtable))
  -             nest
  -             ,shared-var
  +             (,shared-var (list nil))
                ,local-var)
            (declare (special ,shared-var))
            setup-reader-macros
            ,@body)
          (let ((*readtable* (copy-readtable))
  -             (nest t)
                ,local-var)
            (declare (special ,shared-var))
  +         (push () ,shared-var)
            setup-reader-macros
  -         ,@body))))
  +         (unwind-protect
  +           (progn
  +             ,@body)
  +           (pop ,shared-var))))))
   
   (defun anaphora-order (anaphora)
     (parse-integer (remove-if-not #'digit-char-p (symbol-name anaphora))))
  
positive.code:          ,(funcall bqreader-fn strm nil))
        (with-anaphora-picking anaphoras shared-anaphoras (#\a #\A)
          (let ((expr (funcall bqreader-fn strm nil)))
            `(lambda ,(sort (union anaphoras (unless nest shared-anaphoras)) #'<=
                            :key #'anaphora-order)
               ,expr))))))
  
  (set-dispatch-macro-character #\# #\` #'|#`-reader|)
  
  (read-from-string "#`(print (list ,a0 ,a1 ,a3))")
  (read-from-string "#4`(print (list ,a0 a1 a3))")
  (read-from-string "#0`(print (list ,a0 a1 a3))")
  (read-from-string "#`(print (list ,a0 a1 a3))")
  (read-from-string "#`(print (list ,a0 ,a1 ,(progn `(foo ,a0) `(bar ,a2))))")
  (read-from-string "#`(print (list ,a0 ,a1 ,(progn #`(foo ,a4) `(bar ,a2))))")
  (read-from-string "#`(print (list ,a0 ,a1 ,(progn #`(foo ,a!4) #`(bar ,a2))))")
  (read-from-string "#`(print (list ,abc ,a1 ,a3))")
  
negative.code: (read-from-string "#`(list ,a1\\1 ,a0)")
  
  (read-from-string "#`(print (list ,a0 ,a1 ,(progn #`(foo ,a!4 #`(baz a!1)) #`(bar ,a2))))")
  (read-from-string "#`(print (list ,a0 ,a1 ,(progn #`(foo ,a!4 #`(baz a!!1)) #`(bar ,a2))))")
  (read-from-string "#`(print (list ,a0 ,a1 ,(progn #`(foo ,a!4 #`(baz a!!5)) #`(bar ,a2))))")
  
  (read-from-string "#`(list ,a0 a!d)")
  (read-from-string "#`(list ,a01 a!02)")
  