anchor.diff:  ;;
   ;; Returns a CONS with the new head expressions in CAR and
   ;; the replacement symbol for the parent in CDR.
  -(defun expex-assignment (x)
  -  (if (not (expex-able? x))
  +(defun expex-assignment (ex x)
  +  (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 (vm-scope-body x) s) ; Special treatment for VM-SCOPE arguments.
  +	          (cons (expex-body ex (vm-scope-body x) s) ; Special treatment for VM-SCOPE arguments.
   				    s)
   			  (cons '(nil) s))
  -  	      (with ((head tail) (expex-expr x))
  -    	    (cons (append head (if (expex-returnable? (car tail))
  +  	      (with ((head tail) (expex-expr ex x))
  +    	    (cons (append head (if (expex-returnable? ex (car tail))
   								   `((%setq ,s ,@tail))
   								   tail))
   		  	      s))))))
  
positive.code: 	`(cons ,(car args)
  		   ,(expex-argexpand-rest (cdr args)))))
  
  (defun expex-argexpand-do (fun args)
    (mapcar #'((x)
  			   (if (and (consp x)
  						(eq '&rest (car x)))
  
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 #'((x)
  											   (expex-assignment ex x))
  										  x)))
      (values (apply #'append pre)
  			main)))
  
  