…ng specific spec for this case so there are no false positives
Arity is just the number of arguments but we check more than that now, so it's good to reflect that.
BasicObject, for example, does not respond to it. It's safer to use `SomeClass === obj` than `obj.is_a?(SomeClass)`.
To support `**kw_args`, `allowed_kw_args` will have to act like an infinite set. Rather than making the verifier (and any future clients) responsible for dealing with this special case, it's simpler to move the invalid/missing kw arg calculations into `MethodSignature`, where it can handle that special case internally.
- The signature of a method is a concept in its own right and deserves to be represented as its own object. - This gives a clear delineaziation of responsibilities between extracting method signature info and verifying arguments against that info. - The new `classify_parameters` approach should perform a bit better than what we had before; it iterates over `method.parameters` once total where as before it would iterate over it 3 times.