anchor.diff:          (if (memq x lambda-list-keywords)
               (case x
                 (&optional         (setf state 'optional))
  -              (&key              (setf keysp t
  -                                       state 'key))
  +              (&rest             (setf state 'rest restp t))
  +              (&key              (setf state 'key  keysp t))
                 (&allow-other-keys (setf allow-other-keys-p t))
  -              (&rest             (setf restp t
  -                                       state 'rest))
  -              (&aux           (return t))
  +              (&aux              (return))
                 (otherwise
                  (error "encountered the non-standard lambda list keyword ~S" x)))
               (ecase state
  
positive.code:   ;; Classify parameters without checking their validity individually.
    (multiple-value-bind (required optional restp rest keyp keys allowp auxp aux)
        (parse-lambda-list-like-thing lambda-list)
  
      ;; Check validity of parameters.
      (flet ((need-symbol (x why)
               (unless (symbolp x)
  
negative.code:                          (push x keyword-parameters))
                (rest      (incf nrest)))))
        (when (and restp (zerop nrest))
          (error "A &REST keyword in a lambda-list ~
                  must be followed by at least one variable."))
        (values nrequired noptional keysp restp allow-other-keys-p
                (reverse keywords) (reverse keyword-parameters)))))
  