anchor.diff:  	(if (expex-able? ex x.)
           (with ((head tail) (expex-expr ex x.))
             (append head tail (expex-list ex .x)))
  -		(cons x. (expex-list ex .x)))))
  +		(cons x.
  +			  (expex-list ex .x)))))
   
   (defun expex-make-return-value (ex e s)
     (with (b  (butlast e)
  
positive.code:       (values nil (list x))
      (vm-scope? x)
  	  (values nil (expex-body ex (vm-scope-body x)))
      (expex-std-expr ex x)))
  
  ;; Entry point.
  
negative.code: ;; Returns the head of moved expressions and a new parent with
  ;; replaced arguments.
  (defun expex-args (ex x)
    (with ((pre main) (assoc-splice (mapcar (fn expex-assignment ex _)
  										  x)))
      (values (apply #'append pre)
  			main)))
  ;;
  ;; Expands standard expression.
  ;;
  ;; The arguments are replaced by gensyms.
  (defun expex-std-expr (ex x)
    (with (argexp (expex-argexpand ex x. .x)
  		 (pre newargs) (expex-args ex (cons x.
  											argexp)))
      (expex-collect-variables ex x)
      (values pre (list newargs))))
  
  ;; Expand %SETQ expression.
  ;;
  ;; The place to set must not be expanded.
  (defun expex-expr-setq (ex x)
    (expex-collect-variables ex x)
    (with ((head replacement) (expex-args ex (cddr x)))
  	(values head
  		    `((%setq ,(second x) ,@replacement)))))
  
  ;; Expand expression depending on type.
  ;;
  