anchor.diff:    ;; These are for argument info
     (number-required 0 :type fixnum)
     (number-optional 0 :type fixnum)
  -  (key/rest-p nil :type boolean)
  -  (keys nil :type (or list boolean)))
  +  (key/rest-p nil :type boolean))
   
   (define-print-object ((message message)) (format t "~S" (message-name message)))
   
  
positive.code: ;;; - 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)
        (analyze-lambda-list (reply-lambda-list reply))
      (flet ((lose (string &rest args)
               (error 'reply-argument-conflict
  
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))
  
  ;;;
  