anchor.diff:                          ;; declare form
                           (let ((declarations (rest form)))
                             (dolist* (dec declarations)
  -                            (setf env (parse-declaration dec env))))
  +                            (multiple-value-setf (env decl) (parse-declaration dec env))
  +			    (when decl
  +			      (push decl decls))))
                           ;; source code, all done
                           (done)))
                 (string (if docstring
  
positive.code: 
  ;;;; FLET/LABELS
  
  (defclass function-binding-form (form binding-form-mixin implicit-progn-mixin)
    ())
  
  (defclass flet-form (function-binding-form)
  
negative.code: (defclass implicit-progn-mixin ()
    ((body :accessor body :initarg :body)))
  
  (defclass implicit-progn-with-declare-mixin (implicit-progn-mixin)
    ((declares :accessor declares :initarg :declares)))
  
  (defclass binding-form-mixin ()
    ((binds :accessor binds :initarg :binds)))
  
  (defmacro multiple-value-setf (places form)
    (let ((names (loop for place in places collect (gensym))))
      `(multiple-value-bind ,names ,form
         ,@(loop for name in names for place in places if (null place) collect `(declare (ignore ,name)))
  	 (setf ,@(loop
  		    for name in names
  		    for place in places
  		    if place collect place
  		    if place collect name)))))
  
  (defun split-body (body env &key (docstring t) (declare t))
    (let ((documentation nil) 
  	(decl nil)
  	(decls nil))
      (flet ((done ()
               (return-from split-body (values body env documentation decls))))
        (loop
           for form = (car body)
           while body
  