anchor.diff:         (not (expex-in-env? x))
          (global-variable? x)))
   
  -(defun expex-funinfo-env-add ()
  +(defun expex-funinfo-env-add-var ()
     (let s (expex-sym)
       (awhen *expex-funinfo*
         (funinfo-env-add ! s))
   	s))
   
  -;(defun expex-funinfo-env-add ()
  -;  (aif *expex-funinfo*
  -;      (funinfo-make-stackplace ! (expex-sym))
  -;  	  (expex-sym)))
  +(defun expex-funinfo-env-add-stack ()
  +  (aif *expex-funinfo*
  +      (funinfo-make-stackplace ! (expex-sym))
  +  	  (expex-sym)))
  +
  +(defun expex-stack-locals? (ex)
  +  (and *expex-funinfo* ; Is set if we're inside a function.
  +	   (transpiler-stack-locals? (expex-transpiler ex))))
  +
  +(defun expex-funinfo-env-add (ex)
  +  (if (expex-stack-locals? ex)
  +	  (expex-funinfo-env-add-stack)
  +	  (expex-funinfo-env-add-var)))
  +
  +(defun expex-local-decl (ex s)
  +  (unless (expex-stack-locals? ex)
  +	`((%var ,s))))
   
   ;;;; PREDICATES
   
  
positive.code: 
  ;; Move out VM-SCOPE if it contains something. Otherwise keep NIL.
  (defun expex-move-arg-vm-scope (ex x)
    (let s (expex-funinfo-env-add)
      (aif (vm-scope-body x)
           (cons (append `((%var ,s))
  		               (expex-body ex ! s))
  		       s)
  	     (cons nil nil))))
  
  (defun expex-move-arg-std (ex x)
    (with (s (expex-funinfo-env-add)
      	 (moved new-expr) (expex-expr ex x))
        (cons (append `((%var ,s))
  					moved
  		    		(if (expex-returnable? ex new-expr.)
  		        		(list (expex-guest-filter-setter ex
  
negative.code: ;;;; CONFIGURATION
  
  (defstruct expex
    (transpiler nil)
  
    ; Callback to check if an object is a function.
    (function? (fn functionp (symbol-value _)))
  
  