anchor.diff:    `(%slot-value ,place ,(second slot)))
   
   (define-js-std-macro bind (fun &rest args)
  -  `(%bind ,(if (%slot-value? fun)
  - 			 (second fun)
  -    		 (error "function must be a SLOT-VALUE, got ~A" fun))
  +  `(%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 (if (and (not (string? _.))
  -								  (eq :class _.))
  -							 "class" ; IE6 wants this.
  -							 _.)
  -						 (second _)))
  +	 ,@(mapcan (fn list (? (and (not (string? _.))
  +							    (eq :class _.))
  +						   "class" ; IE6 wants this.
  +						   _.)
  +						._.)
   			   (group x 2))))
   
   (defun js-transpiler-make-new-object (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:      `(? ,x. nil t)))
  
  (define-js-std-macro 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
              ,e (slot-value ,f 'tre-exp))
         (? e
            (let ,a (list ,@args)
              ((slot-value ,e 'apply) nil (%transpiler-native "[" ,a "]")))
            (,f ,@args)))))
  
  (defun js-cps-exception (x)
  