anchor.diff:              (when (not valid) (return))
               (funcall fn symbol)))))
   
  -;; FIXME: Declares
   (defmacro do-external-symbols ((var &optional (package '*package*) result-form) &body body)
  -  `(block nil
  -     (map-external-symbols (lambda (,var) (tagbody ,@body)) ,package)
  -     (let ((,var nil))
  -       (declare (ignorable ,var))
  -       ,result-form)))
  +  (multiple-value-bind (body-forms declares)
  +      (parse-declares body)
  +    `(block nil
  +       (map-external-symbols (lambda (,var)
  +                               (declare ,@declares)
  +                               (tagbody ,@body-forms))
  +                             ,package)
  +       (let ((,var nil))
  +         (declare (ignorable ,var)
  +                  ,@declares)
  +         ,result-form))))
   
   (defun map-all-symbols (fn)
     (with-package-iterator (itr (list-all-packages) :internal :external)
  
positive.code:             (when (not valid) (return))
              (funcall fn symbol)))))
  
  ;; FIXME: Declares
  (defmacro do-symbols ((var &optional (package '*package*) result-form) &body body)
    `(block nil
       (map-symbols (lambda (,var) (tagbody ,@body)) ,package)
       (let ((,var nil))
         (declare (ignorable ,var))
         ,result-form)))
  
  (defun map-external-symbols (fn package)
    (with-package-iterator (itr (list package) :external)
  
negative.code:             (when (not valid) (return))
              (funcall fn symbol)))))
  
  (defmacro do-all-symbols ((var &optional result-form) &body body)
    (multiple-value-bind (body-forms declares)
        (parse-declares body)
      `(block nil
         (map-all-symbols (lambda (,var)
                            (declare ,@declares)
                            (tagbody ,@body-forms)))
         (let ((,var nil))
           (declare (ignorable ,var)
                    ,@declares)
           ,result-form))))
  
  (defun find-all-symbols (string)
    (setf string (string string))
  