anchor.diff:  ;;; - Note that Sheeple doesn't follow CLHS 7.6.4 to the letter.
   
   (defun check-reply-arg-info (message reply)
  -  (multiple-value-bind (nreq nopt keysp restp allow-other-keys-p keywords)
  +  (multiple-value-bind (nreq nopt keysp restp)
         (analyze-lambda-list (reply-lambda-list reply))
       (flet ((lose (string &rest args)
                (error 'reply-argument-conflict
  
positive.code:              (if (> x y) "more" "fewer")))
        (with-accessors ((msg-nreq       message-number-required)
                         (msg-nopt       message-number-optional)
                         (msg-key/rest-p message-key/rest-p)
                         (msg-keywords   message-keys)) message
          (cond ((not (= nreq msg-nreq))
                 (lose "the reply has ~A required arguments than the message."
                       (comparison-description nreq msg-nreq)))
  
negative.code:                      (comparison-description nopt msg-nopt)))
                ((not (eq (or keysp restp) msg-key/rest-p))
                 (lose "the reply and message differ in whether they accept &REST or &KEY arguments."))
                (t (values)))))))
  
  (defun set-arg-info (message lambda-list)
    (multiple-value-bind (nreq nopt keysp restp)
        (analyze-lambda-list lambda-list)
      (setf (message-lambda-list message) lambda-list
            (message-number-required message) nreq
            (message-number-optional message) nopt
            (message-key/rest-p message) (or keysp restp)))
    (values))
  
  ;;;
  