*thinks* Now that you mention it, if someone calls your hypothetical function with (key, NaN) is the desired behaviour to return false under all circumstances, or to test for NaN? :)
I did wonder that myself, and reached no conclusion :-) so for the moment I'm comfortable with leaving that case unspecified and hence not disqualifying any solution for its behaviour in that situation.