anchor.diff:  				 _)
   		  (or x (list nil))))
   
  -;; Expand VM-SCOPE body and have the return value of the last expression
  -;; assigned to a gensym which will replace it in the parent expression.
  +(defun expex-list (ex x)
  +  (when x
  +    (with ((moved new-expr) (expex-expr ex x.))
  +      (append moved
  +			  (mapcan (fn expex-force-%setq ex _) new-expr)
  +			  (expex-list ex .x)))))
  +
   (defun expex-body (ex x &optional (s '~%ret))
  -  (expex-make-return-value ex s
  -      (expex-list ex (expex-save-atoms (list-without-noargs-tag x)))))
  +  (expex-make-return-value ex s (expex-list ex (expex-save-atoms (list-without-noargs-tag x)))))
   
   ;;;; TOPLEVEL
   
  
positive.code: 	(expex-move-arg-std ex x)))
  
  (defun expex-filter-and-move-args (ex x)
    (assoc-splice (mapcar (fn expex-move-arg ex _)
     		                (expex-guest-filter-arguments ex x))))
  
  (defun expex-move-slot-value (ex x)
    (with ((moved new-expr) (expex-filter-and-move-args ex (list .x.)))
  
negative.code: ;;
  ;; Rejects atoms and expressions with meta-forms.
  (defun expex-able? (ex x)
    (or (and (expex-move-lexicals? ex)
             (symbol? x)
             (not (funinfo-in-args-or-env? *expex-funinfo* x)))
        (not (or (atom x)
  		       (function-ref-expr? x)
                 (in? x. '%%vm-go '%%vm-go-nil '%transpiler-native '%transpiler-string '%quote)))))
  
  ;; Check if an expression has a return value.
  (defun expex-returnable? (ex x)
  