anchor.diff:      (dolist* ((var . value) (binds let))
         (declare (ignore value))
         (setf env (register env :let var :dummy)))
  -    (setf (body let) (walk-implict-progn let (cddr form) env :declare t))))
  +    (multiple-value-setf ((body let) nil (declares let)) (walk-implict-progn let (cddr form) env :declare t))))
   
   (defclass let*-form (variable-binding-form)
     ())
  
positive.code: (defclass implicit-progn-mixin ()
    ((body :accessor body :initarg :body)))
  
  (defclass binding-form-mixin ()
    ((binds :accessor binds :initarg :binds)))
  
  (defun split-body (body env &key (docstring t) (declare t))
    (let ((documentation nil))
      (flet ((done ()
               (return-from split-body (values body env documentation))))
        (loop
           for form = (car body)
           while body
  
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
  
  