anchor.diff:  
   ;;;; FLET/LABELS
   
  -(defclass function-binding-form (form binding-form-mixin implicit-progn-mixin)
  +(defclass function-binding-form (form binding-form-mixin implicit-progn-with-declare-mixin)
     ())
   
   (defclass flet-form (function-binding-form)
  
positive.code:     (dolist* ((var &optional initial-value) (mapcar #'ensure-list (second form)))
        (push (cons var (walk-form initial-value let* env)) (binds let*))
        (setf env (register env :let var :dummy)))
      (setf (binds let*) (nreverse (binds let*))
            (body let*) (walk-implict-progn let* (cddr form) env :declare t))))
  
  ;;;; LOCALLY
  
  (defclass locally-form (form implicit-progn-mixin)
    ())
  
  (defwalker-handler locally (form parent env)
    (with-form-object (locally locally-form :parent parent :source form)
      (setf (body locally) (walk-implict-progn locally (cdr form) env :declare t))))
  
  ;;;; MACROLET
  
  (defclass macrolet-form (form binding-form-mixin implicit-progn-mixin)
    ())
  
  (defwalker-handler macrolet (form parent env)
  
negative.code:          (extend-env (var (rest arguments)) var `(type ,(first arguments))))
          (t
           (extend-env (var arguments) var `(type ,type))))))
    (values environment declaration))
  
  (defun walk-implict-progn (parent forms env &key docstring declare)
    (multiple-value-bind (body env docstring declarations)
        (split-body forms env :docstring docstring :declare declare)
      (values (mapcar (lambda (form)
                        (walk-form form parent env))
                      body)
              docstring
  	    declarations)))
  
  ;;;; Atoms
  
  