Formerly, the code attempted to extract the argument value from the
hash of provided values and test it against nil. This fails in the
case of an explicitly passed nil. The new version instead tests
whether the hash contains the desired key.
There were two basic problems with the existing logic:
* Arguments could be treated both as kw args and as, e.g.,
* An arity check for methods with kw arguments in the Arity class
is deferred to asignment time, but the check was not being performed