Is it specified that Set must be hashtable-based forever? There are alternate ways to implement a Set.
Alternate ways of implementing Set with check/insertion in O(1) that would also work if structures change without a rehash functionality?
In any case, the documentation states that "Set uses Hash as storage", but more importantly that "The equality of each couple of elements is determined according to Object#eql? and Object#hash".
Actually, an undocumented "feature" is that Set does not support an element being modified once it is added.
Maybe we should "clarify" that in the document, or add such a method that recalculates identities of elements. I'm yet to decide which, and the name we could give it.