The line that struck me as odd wasn't the values check but the *class* check, @chikoon -- there's no way for the code to deliver anything but a Hash, and even if this method was made public for some reason and used by other clients, you could still have perfectly fine key-value pairs without the object being a "Hash".