anchor.diff:  				    s)
   			  (cons '(nil) s))
     	      (with ((head tail) (expex-expr x))
  -    	    (cons (nconc head (if (expex-returnable? (car tail))
  -								  `((%setq ,s ,@tail))
  -								  tail))
  +    	    (cons (append head (if (expex-returnable? (car tail))
  +								   `((%setq ,s ,@tail))
  +								   tail))
   		  	      s))))))
   
   ;; Move subexpressions out of a parent.
  
positive.code: ;; replaced arguments.
  (defun expex-args (x)
    (with ((pre main) (assoc-splice (mapcar #'expex-assignment x)))
      (values (apply #'nconc pre)
  			main)))
  
  (defun expex-argexpand-do (fun args)
    (mapcar #'((x)
  			   (if (and (consp x)
  						(eq '&rest (car x)))
  				   (simple-quote-expand (cdr x))
  				   x))
  		  (cdrlist (argument-expand (function-arguments (symbol-function fun)) args t))))
  
  
negative.code:   (with (b (butlast e)
  		 l (last e))
     	(if (expex-returnable? (car l))
  		(append b (if (%setq? (car l))
  					  (if (%setqret? (car l))
  				          `((%setq ~%ret ,(caddar l)))
  						  `((%setq ,(cadar l) ,(caddar l))  ; Assign to return value.
  						    (%setq ~%ret ,(caddar l))))
  				      `((%setq ,s ,@(or l '(nil))))))
  		e)))
  
  ;; Transform moved expression to one which assigns its return
  