To clarify what @JonRowe said -- in RSpec we have to work with all manner of custom objects.  Users may have objects that have defined `is_a?` wrongly (e.g. `user.is_a?(:admin)`).  It's far less likely that the user has monkey patched `Hash#===`, and if they are monkey patching core types to change their semantics it's fair for us to say "we don't support you."