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: 
  (define-transform-rule (:toplevel form)
    (let ((lexenv-chain (cons :obj lexenv-chain)))
      (list (js-intern (car form))
  	  (copy-list lexenv-chain)
  	  (transform-tree (second form)))))
  
negative.code: (in-package :js)
  ;;
  (defmacro with-new-lexical-environment ((var new-env) &body body)
    `(let* ((lexenv-chain (cons ,new-env lexenv-chain))
  	  (,var (copy-list lexenv-chain)))
       (declare (special lexenv-chain)) ; ... later
       (progn (push ,var environments) ,@body)))
  
  (defun transform-tree (form)
    (cond ((null form) nil)
  	((atom form)
  