anchor.diff:  	    (transform-tree (second form)))))
   ;;
   
  -(flet ((dump (el)
  -	 (or (and (symbolp el) el) (set-elems el))))
  -  (defun dump-lexenv-chain (fname)
  -    (let ((dump (mapcar #'dump *lexenv-chain*)))
  -      (if fname (cons (list fname) dump)
  -	  dump)))
  +(labels ((dump-decl-env (env)
  +	   (let ((rest (append (second env) (set-elems (third env)))))
  +	     (if (first env) (cons (first env) rest) rest)))
  +	 (dump (el)
  +	   (if (listp el) (dump-decl-env el) el)))
  +  (defun dump-lexenv-chain ()
  +    (mapcar #'dump *lexenv-chain*))
     (defun transform-obj-env (place)
       (setf (car place) (dump (car place)))
       (setf (cdr place) (mapcar #'dump (cdr place)))))
  
positive.code: 	  (list (mapcar
  		 (lambda (var-desc)
  		   (let ((var-sym (->sym (car var-desc))))
  		     (set-add env var-sym)
  		     (set-add locals var-sym)
  		     (cons (->sym (car var-desc))
  			   (transform-tree (cdr var-desc)))))
  
negative.code:     (unless *toplevel*
        (when (second form)
  	(let ((fun-name (->sym (second form))))
  	  (set-add locals fun-name))))
    (let ((placeholder (list (car form))))
      (queue-enqueue lmbd-forms
  		   (list form placeholder (copy-list *lexenv-chain*)))
      placeholder))
  
  (define-transform-rule (:function form)
      (let ((placeholder (list (car form))))
        (queue-enqueue lmbd-forms
  		     (list form placeholder (copy-list *lexenv-chain*)))
        placeholder))
  
  (define-transform-rule (:toplevel form)
  