anchor.diff:        ,@(if aok '(&allow-other-keys) ())
         ,@(if opts `(&optional ,@opts) ())
         ,@(if auxs `(&aux ,@auxs) ()))))
  -
  -(defun extract-participants (specialized-lambda-list)
  -  (let ((plist (analyze-lambda-list specialized-lambda-list)))
  -    (getf plist ':participants)))
   
   (defun analyze-lambda-list (lambda-list)
     (labels ((make-keyword (symbol)
  
positive.code: 	      (&key
  	       (setq state :parsing-key))
  	      (&allow-other-keys
  	       (setq allow-other-keys =t=))
  	      (&aux
  	       (setq state :parsing-aux)))
  	    (case state
  
negative.code:       var-name
        (error "Invalid var name.")))
  
  (defun extract-participants (specialized-lambda-list)
    (let ((plist (analyze-lambda-list specialized-lambda-list)))
      `(list ,@(getf plist :participants))))
  
  (defmacro undefmessage (&rest args)
    (multiple-value-bind (name qualifiers lambda-list)
  