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:           (let ((msg-nreq (arg-info-number-required arg-info))
                  (msg-nopt (arg-info-number-optional arg-info))
                  (msg-key/rest-p (arg-info-key/rest-p arg-info)))
              (unless (and (= nreq msg-nreq)
                           (= nopt msg-nopt)
                           (eq (or keysp restp) msg-key/rest-p))
                (error 'reply-lambda-list-conflict
                       :lambda-list lambda-list :message msg))))
  