I think the larger problem is referential transparency: most OO languages allow two objects that represent the same states to have distinct identities, even if compare-by-value claims they're equal.
Of course, it's not impossible to have referentially transparent objects. I wrote such a language (Reia)