anchor.diff:  ;;;   and the code that updates the valid arg info for a message whenever a reply
   ;;;   is added. The add-reply function, though, is in reply-generation.lisp
   (defstruct (arg-info (:conc-name nil)
  -                     (:constructor make-arg-info ())
  -                     (:copier nil))
  +                     (:constructor make-arg-info))
     (arg-info-lambda-list :no-lambda-list)
     arg-info-precedence
     arg-info-metatypes
  
positive.code:   msg-info-fast-mf-p)
  
  (defun arg-info-valid-p (arg-info)
    (not (null (arg-info-number-optional arg-info))))
  
  (defun arg-info-applyp (arg-info)
    (or (plusp (the fixnum (arg-info-number-optional arg-info)))
        (arg-info-key/rest-p arg-info)))
  
  (defun arg-info-number-required (arg-info)
    (length (the simple-array (arg-info-metatypes arg-info))))
  
  (defun arg-info-nkeys (arg-info)
    (count-if (fun (not (eq _ t))) (arg-info-metatypes arg-info)))
  
negative.code:                (error "encountered the non-standard lambda list keyword ~S"
                        x)))
              (ecase state
                (required  (incf nrequired))
                (optional  (incf noptional))
                (key       (push (parse-key-arg x) keywords)
                           (push x keyword-parameters))
                (rest      (incf nrest)))))
        (when (and restp (zerop nrest))
          (error "Error in lambda-list:~%~
                  After &REST, a DEFMESSAGE lambda-list ~
  