anchor.diff:       `(? ,x. nil t)))
   
   (define-js-std-macro function (x)
  -  (if (cons? x)
  -      (with-lambda-content x fi args body
  -	    (if (or (body-has-noargs-tag? body)
  -                (simple-argument-list? args))
  -  		    `(function ,x)
  -		    (js-make-function-with-compiled-argument-expansion x)))
  -  	  `(function ,x)))
  +  (? (cons? x)
  +     (with-lambda-content x fi args body
  +	   (? (or (body-has-noargs-tag? body)
  +              (simple-argument-list? args))
  +  	      `(function ,x)
  +		  (js-make-function-with-compiled-argument-expansion x)))
  +  	 `(function ,x)))
   
   (define-js-std-macro funcall (fun &rest args)
     (with-gensym (f e a)
       `(with (,f ,fun
  -            ,expander (slot-value ,f 'tre-exp))
  -       (? expander
  +            ,e (slot-value ,f 'tre-exp))
  +       (? e
             (let ,a (list ,@args)
  -            ((slot-value ,expander 'apply) nil (%transpiler-native "[" ,a "]")))
  +            ((slot-value ,e 'apply) nil (%transpiler-native "[" ,a "]")))
             (,f ,@args)))))
   
   (defun js-cps-exception (x)
  
positive.code:       (transpiler-add-cps-function *js-transpiler* g))
      (with-lambda-content x fi args body
        `(#'((,g)
  	        (setf ,g ,(copy-lambda `(function ,x)
  					               :body (body-with-noargs-tag body)))
  		    (setf (slot-value ,g 'tre-exp)
                    ,(compile-argument-expansion g args))
  		    ,g)
  		  nil))))
  
  
negative.code:   `(%slot-value ,place ,(second slot)))
  
  (define-js-std-macro bind (fun &rest args)
    `(%bind ,(? (%slot-value? fun)
   			  .fun.
      		  (error "function must be a SLOT-VALUE, got ~A" fun))
  		  ,fun))
  
  (defun js-transpiler-make-new-hash (x)
    `(make-hash-table
  	 ,@(mapcan (fn list (? (and (not (string? _.))
  							    (eq :class _.))
  						   "class" ; IE6 wants this.
  						   _.)
  						._.)
  			   (group x 2))))
  
  (defun js-transpiler-make-new-object (x)
  