anchor.diff:  	  label)))
   
   (define-transform-rule (:try form)
  -  (let* ((var (->sym (car (third form))))
  -	 (lexenv-chain (cons (list var) lexenv-chain))
  -	 (placeholder (copy-list lexenv-chain)))
  -    (push placeholder environments)
  -    (list (js-intern (car form))
  -	  placeholder
  -	  (transform-tree (second form)) ;body
  -	  var ;catch var
  -	  (transform-tree (cdr (third form))) ;catch body
  -	  (transform-tree (fourth form))))) ;finally block
  +  (let* ((var (->sym (car (third form)))))
  +    (with-new-lexical-environment (env (list var))
  +      (list (js-intern (car form))
  +	    env
  +	    (transform-tree (second form)) ;body
  +	    var ;catch var
  +	    (transform-tree (cdr (third form))) ;catch body
  +	    (transform-tree (fourth form)))))) ;finally block
   
   (define-transform-rule (:name form)
     (list (js-intern (car form)) (->sym (second form))))
  
positive.code: 	   (locals (set-make))
  	   (arglist (mapcar #'->sym (third form)))
  	   (name (and (second form) (->sym (second form)))))
        (declare (special locals environments toplevel))
        (let* ((lexenv-chain (cons (list name arglist locals) lexenv-chain))
  	     (placeholder (copy-list lexenv-chain)))
  	(push placeholder environments)
  	(let ((new-form (lift-defuns (transform-tree (fourth form)))))
  	  (list (js-intern (first form))
  		placeholder
  		name
  		arglist
  		(set-elems locals)
  
negative.code: 
  (define-transform-rule (:toplevel form)
    (let ((lexenv-chain (cons :obj lexenv-chain)))
      (declare (special lexenv-chain))
      (list (js-intern (car form))
  	  (copy-list lexenv-chain)
  	  (transform-tree (second form)))))
  