anchor.diff:        `(lambda ,(loop :for i :from 0 :upto (1- n)
                         :collect (intern-anaphora i))
            ,(funcall bqreader-fn strm nil))
  -      (with-anaphora-picking anaphoras (#\a #\A)
  +      (with-anaphora-picking anaphoras shared-anaphoras (#\a #\A)
           (let ((expr (funcall bqreader-fn strm nil)))
  -          `(lambda ,(sort anaphoras #'<=
  -                          :key (lambda (a) (parse-integer (subseq (symbol-name a) 1))))
  +          `(lambda ,(sort (union anaphoras shared-anaphoras) #'<=
  +                          :key (lambda (a) (parse-integer (remove-if-not #'digit-char-p (symbol-name a)))))
                ,expr))))))
   
   (set-dispatch-macro-character #\# #\` #'|#`-reader|)
  
positive.code: (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 ,a4) #`(bar ,a2))))")
  (read-from-string "#`(print (list ,abc ,a1 ,a3))")
  (let ((*read-base* 4))
    (read-from-string "#`(print (list ,a10 (bc ,a2) ,a1 ,a0 a4))"))
  
negative.code: (read-from-string "#`(list ,a\\1 ,a0)")
  (read-from-string "#`(list ,A\\1 ,a0)")
  (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 "#`(list ,a0 a!d)")
  (read-from-string "#`(list ,a01)")
  