anchor.diff:                       msg-keywords))
                 (t t))))))
   
  -(defun set-arg-info (msg &key new-reply (lambda-list nil lambda-list-p))
  -  (let* ((arg-info (message-arg-info msg))
  -         (replies (message-replies msg))
  +(defun set-arg-info (message &key new-reply (lambda-list nil lambda-list-p))
  +  (let* ((arg-info (message-arg-info message))
  +         (replies (message-replies message))
            (firstp (and new-reply (null (cdr replies)))))
       (when (and (not lambda-list-p) replies)
  -      (setf lambda-list (message-lambda-list msg)))
  +      (setf lambda-list (message-lambda-list message)))
       (when (or lambda-list-p
                 (and firstp
                      (eq (arg-info-lambda-list arg-info) :no-lambda-list)))
  
positive.code: ;;; Message definition (finally!)
  ;;;
  ;; Finalizing a message sets the function definition of the message to a
  ;; lambda that calls the top-level dispatch function on the msg args.
  (defun finalize-message (message)
    (let ((name (message-name message)))
      (when (and (fboundp name)
  
negative.code: ;; This pair just pretties up the options during macro expansion
  (defmacro defmessage (name lambda-list &rest options)
    `(progn
       (check-message-lambda-list ',lambda-list)
       (ensure-message ',name :lambda-list ',lambda-list
                       ,@(canonize-message-options options))))
  
  