anchor.diff:      (values environment declares)))
   
   (defun walk-implict-progn (parent forms env &key docstring declare)
  -  (multiple-value-bind (body env docstring declarations)
  -      (split-body forms env :parent parent :docstring docstring :declare declare)
  -    (values (mapcar (lambda (form)
  -                      (walk-form form parent env))
  -                    body)
  -            docstring
  -	    declarations)))
  +  (handler-bind ((undefined-reference (lambda (condition)
  +                                        (unless (enclosing-code condition)
  +                                          (setf (enclosing-code condition) `(progn ,@forms))))))
  +    (multiple-value-bind (body env docstring declarations)
  +        (split-body forms env :parent parent :docstring docstring :declare declare)
  +      (values (mapcar (lambda (form)
  +                        (walk-form form parent env))
  +                      body)
  +              docstring
  +              declarations))))
   
   ;;;; Atoms
   
  
positive.code: ;;;; * A Code Walker
  
  ;;;; ** Public Entry Point
  
  (defun walk-form (form &optional (parent nil) (env (make-walk-env)))
    "Walk FORM and return a FORM object."
  
negative.code:      ;; a globaly defined symbol-macro
       (walk-form (macroexpand-1 form) parent env))
      (t
       (when (and *warn-undefined*
                  (not (boundp form)))
         (warn 'undefined-variable-reference :name form))
       (make-instance 'free-variable-reference :name form
                      :parent parent :source form))))
  
  