anchor.diff:       (with ((head tail) (expex-expr ex (car x)))
          (append head tail (expex-list ex (cdr x))))))
   
  +(defun expex-make-return-value (ex e s)
  +  (with (b (butlast e)
  +		 l (last e)
  +		 la (car l))
  +   	(if (expex-returnable? ex la)
  +		(append b (if (%setq? la)
  +					  (if (eq s (second la))
  +				          l
  +						  `(,la
  +						    (%setq ,s ,(second la))))
  +				      `((%setq ,s ,@(or l '(nil))))))
  +		e)))
  +
   ;; 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.
  
positive.code:   (if (not (expex-able? ex x))
  	  (cons nil x)
    	  (with (s (expex-sym))
    	  (if (vm-scope? x)
  		  (if (vm-scope-body x)
  	          (cons (expex-body ex (vm-scope-body x) s) ; Special treatment for VM-SCOPE arguments.
  				    s)
  			  (cons '(nil) s))
    	      (with ((head tail) (expex-expr ex x))
      	    (cons (append head (if (expex-returnable? ex (car tail))
  								   `((%setq ,s ,@tail))
  								   tail))
  		  	      s))))))
  
  ;; Move subexpressions out of a parent.
  ;;
  
negative.code: (defun expex-returnable? (ex x)
    (not (vm-jump? x)))
  
  ;; Transform moved expression to one which assigns its return
  ;; value to a gensym.
  ;;
  