anchor.diff:          (argument-expand-compiled-values fun argdef args)
   	    args)))
   
  -;; XXX this sucks blood out of stones. Should have proper macro expansion
  -;; instead.
  -(defun expex-convert-quotes (x)
  -  (mapcar (fn (if (quote? _)
  -				  `(%quote ,(second _))
  -				  _))
  -		  x))
  -
   ;; Expand arguments if they are passed to a function.
  -(defun expex-argexpand (ex fun args)
  -  (if (funcall (expex-function? ex) fun)
  -	  (expex-convert-quotes
  -		  (expex-argexpand-0 ex fun args))
  -	  args))
  +(defun expex-argexpand (ex x)
  +  (with (new? (%new? x)
  +		 fun (if new?
  +				 (second x)
  +				 x.)
  +		 args (if new?
  +				  (cddr x)
  +				  .x))
  +	`(,@(when new? (list '%new))
  +	  ,fun
  +    	  ,@(if (funcall (expex-function? ex) fun)
  +	    	    (expex-convert-quotes
  +		    	    (expex-argexpand-0 ex fun args))
  +	    	    args))))
   
   ;;;;; ARGUMENT VALUE EXPANSION
   
  
positive.code: ;; XXX argument conversion by guest.
  (defun expex-expr-std (ex x)
    (with ((moved new-expr) (expex-move-args ex
  							  (cons x.
  									(expex-argexpand ex x. .x))))
      (values moved
  			(list new-expr))))
  
  
negative.code: 
  ;;;; ARGUMENT EXPANSION
  
  ;; XXX this sucks blood out of stones. Should have proper macro expansion
  ;; instead.
  (defun expex-convert-quotes (x)
    (mapcar (fn (if (quote? _)
  				  `(%quote ,(second _))
  				  _))
  		  x))
  
  ;; Expand arguments to function.
  (defun expex-argexpand-0 (ex fun args)
    (funcall (expex-function-collector ex) fun args)
  