There are not that many kinds of things that can have metadata, neither in Clojure, and about the only that I know of that have been added outside of Clojure are additional implementations of persistent collections, and most or all of them compare equality via values, not identity. I agree the sky is the limit in what is possible in third party libraries, but I doubt there are many examples you could find that fall into this exception.