I'm not so sure about the part with `union` and that it does not matter which set. Although there was no doc about the behaviour, previously `Set` implemented `union` with `++` which gives priority to keeping the left hand side elements. Application that rely on this and use objects with non-structural `equals` might break.

Independently of that, I wasn't implying above that this commit should merge `HashSet` and `HashMap` together, just that maybe we should have a `merged` on hash sets too? And `union` implemented in terms of `merged`? I don't think performance differences for immutable hash sets if `union` is implemented in terms of `merged` are critical here - applications that need will use mutable hash sets anyway. Wdyt?