I don't think that reference equality applies here - point is, most people know that you're not supposed to use `ne` and `eq` on return types of collections to drive the logic of your application, but many people might be relying on the left-hand-side semantics of union. This still leaves some optimizations open.

My point about performance above was that most performance-critical applications do a series single updates on a hash table rather than creating copies, so they would not use immutable data structures to begin with. But scala-debate is a better place for such a discussion, not this pr ;)

But, rather than prolonging this discussion further - my original comment was that for consistency reasons, `immutable.HashSet` should have a `merged` too. And if it did, `union` in terms of `merged` would simplify the code.

That's my 2 cents as a reviewer. If you are sure that the performance gain is worth it, then go ahead with the merge. Would be nice to test that too.