anchor.diff:  
   (defmacro js!new (func args)
     (let ((ret (gensym)))
  -    `(let ((,ret (make-instance 'native-hash :prototype (prop ,func "prototype"))))
  +    `(let ((,ret (make-instance 'native-hash :prototype (prop ,func 'prototype))))
          (funcall (proc ,func) ,ret ,@args)
  -       (setf (prop ,ret "constructor") ,func)
  +       (setf (prop ,ret 'constructor) ,func)
          ,ret)))
   
   (defmacro js!return (ret)
  
positive.code: 	 (local-var-list (find-vars body))
  	 (local-variable-p
  	  (lambda (var)
  	    (or (member var (list "this" "arguments") :test #'string-equal)
  		(member var args :test #'string-equal)
  		(member var local-var-list
  			:test #'string-equal :key #'car))))
  	 (blockname (gensym)))
      `(macrolet ((js!name (name)
  		  (if (funcall ,local-variable-p name)
  		      `,(->sym name)
  		      `,`(prop *global* #+nil this ,name)))
  		(js!assign (op exp val)
  		  (let ((name (find-name exp)))
  		    (if (funcall ,local-variable-p name)
  
negative.code:   `(progn ,@form))
  
  (defmacro js!name (attr)
    (if (eq attr 'this)
        'this
        `(prop this ',attr)))
  
  (defmacro js!dot (obj attr)
    `(prop ,obj ',attr))
  
  (defmacro js!assign (op place val)
    `(setf ,place ,val))
  