anchor.diff:  
   		 exp-optional
   		   #'((def vals)
  -				(when (argument-keyword? def.)
  -				  (err "Keyword ~A after &OPTIONAL" def.))
  +				(and (argument-keyword? def.)
  +				     (err "Keyword ~A after &OPTIONAL" (list def.)))
   				(setf no-static '&optional)
   				(cons (cons (get-name def)
   							(get-value def vals))
   					  (?
  -						(argument-list-keyword? (cadr def))
  -					  	  (exp-main .def .vals)
  -						.def
  -						  (exp-optional .def .vals)
  +						(argument-list-keyword? (cadr def)) (exp-main .def .vals)
  +						.def (exp-optional .def .vals)
   					  	(exp-main .def .vals))))
   
   		 exp-key
  
positive.code: 								   (num nil)
  								   (rest-arg nil))
    (with (err
  		   #'((msg &rest args)
  				(error (string-concat
                             (format nil "Call of function ~A:~%"
  						               "Argument definition: ~A~%"
  						               "Given arguments: ~A~%"
                                         "~A")
  					               (symbol-name fun) adef alst msg
  					       args)))
  		 get-name
  		   #'((def)
  				(? (cons? def.)
  
negative.code: 		  '((a . 23) (b . 5) (c &rest 42 65))))
    t)
  
  (define-test "argument expansion can handle &REST keyword without :apply-values"
    ((equal (argument-expand-names 'test '(a b c &rest d))
  		  '(a b c d)))
    t)
  