anchor.diff:                      ,@ignores
                       ,@body))))
   
  -(defun split-body (body env &key (docstring t) (declare t))
  +(defun split-body (body env &key parent (docstring t) (declare t))
     (let ((documentation nil) 
  -	(decl nil)
  +	(newdecls nil)
   	(decls nil))
       (flet ((done ()
                (return-from split-body (values body env documentation decls))))
  
positive.code: (defclass declaration-form (form)
    ())
  
  (defun parse-declaration (declaration environment)
    (macrolet ((extend-env ((var list) &rest datum)
                 `(dolist (,var ,list)
                    (setf environment (register environment :declare ,@datum)))))
      (destructuring-bind (type &rest arguments)
          declaration
        (case type
          (dynamic-extent
           (extend-env (var arguments)
                       var `(dynamic-extent)))        
          (ftype
           (extend-env (function-name (cdr arguments))
                       function-name `(ftype ,(first arguments))))
          (ignorable
           (extend-env (var arguments)
                       var `(ignorable)))
          (ignore
           (extend-env (var arguments)
                       var `(ignorable)))
          (inline
            (extend-env (function arguments) function `(ignorable)))
          (notinline
           (extend-env (function arguments) function `(notinline)))
          (optimize
           (extend-env (optimize-spec arguments) 'optimize optimize-spec))
          (special
           (extend-env (var arguments) var `(special)))
          (type
           (extend-env (var (rest arguments)) var `(type ,(first arguments))))
          (t
           (extend-env (var arguments) var `(type ,type))))))
    (values environment (make-instance 'declaration-form :source 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)
  
negative.code:                         ;; declare form
                          (let ((declarations (rest form)))
                            (dolist* (dec declarations)
                              (multiple-value-setf (env newdecls) (parse-declaration dec env parent))
  			    (setf decls (append newdecls decls))))
                          ;; source code, all done
                          (done)))
                (string (if docstring
  