anchor.diff:       (setf ,(->usersym name) (!function ,lex-chain nil ,args ,locals ,body))
        (proc ,(->usersym name))))
   
  -(defmacro eval-in-lexenv (lex-chain obj-env-stack form)
  -  (let* ((vars `(,@(apply #'append
  -			  (mapcar (lambda (el)
  -				    (when (listp el)
  -				      (mapcar #'->usersym el))) lex-chain))))
  -	 (binds `((list '-object-env-stack- (cons 'list ,obj-env-stack))
  -		  ,@(mapcar (lambda (var) `(list ',var ,var)) vars))))
  -    `(cons 'with-ignored-style-warnings
  -	   (list 
  -	    (cons 'let (list (list ,@binds) ,form))))))
  -
   (defmacro !lambda (lex-chain args locals body)
     (let* ((additional-args (gensym))
   	 (blockname (gensym)))
  
positive.code: 
  (defparameter *global* (make-instance 'global-object))
  (defparameter js-user::this *global*)
  #+nil (defparameter *object-env-stack* nil)
  
  ;;;
  
  
negative.code: 	(t (multiple-value-bind (n found) (count-lookups lexchain 0)
  	     `(let ((,val ,val-exp)) ,(build-tree n found))))))))
  
  (defmacro eval-in-lexenv (lex-chain obj-env-stack form)
    (let* ((vars `(,@(apply #'append
  			  (mapcar (lambda (el)
  				    (when (listp el)
  				      (mapcar #'->usersym el))) lex-chain))))
  	 (binds `((list '-object-env-stack- (cons 'list ,obj-env-stack))
  		  ,@(mapcar (lambda (var) `(list ',var ,var)) vars)))
  	 (eval-form 
  	  `(cons 'with-ignored-style-warnings
  		 (list 
  		  (cons 'let (list (list ,@binds) ,form))))))
      `(eval ,eval-form)))
  
  (defmacro eval-function (lex-chain)
    `(!function nil nil (str) nil
  	      ((let ((form (process-ast (parse-js-string str) ',lex-chain)))
  		 (!return
  		  (eval-in-lexenv ,lex-chain -object-env-stack- form))))))
  
  ;;;
  
  (defmacro !toplevel (toplevel-vars lex-chain from-eval-p form)
    `(macrolet ((!arguments () 'arguments)
  	      (!eval-in-lexenv ()
  		(macroexpand `(eval-function ,',lex-chain)))
  	      (!name (name)
  		(macroexpand `(lookup-in-lexchain ,name ,',lex-chain)))
  	      (!setf-name (name val)
  		(macroexpand `(set-in-lexchain ,name ,val ,',lex-chain))))
       (with-ignored-style-warnings
         (let* ((-object-env-stack- ,(if from-eval-p
  				       '-object-env-stack-
  				       '(list *global*))))
  	 (progn
  	   ,@(mapcar (lambda (var)
  		       `(setf (prop *global* ,var)
  