public void TestIntersectWithEdgeCase() { EqualityComparer <int> equalityComparer = EqualityComparer <int> .Default; Func <int, int> getHashCode = value => Math.Abs(value) < 5 ? 0 : 1; ImmutableTreeSet <int> .Builder set = ImmutableTreeSet.CreateBuilder(new SubsetHashCodeEqualityComparer <int>(equalityComparer, getHashCode)); ImmutableTreeSet <int> .Builder other = ImmutableTreeSet.CreateBuilder(set.KeyComparer); set.UnionWith(Enumerable.Range(0, 10)); other.UnionWith(new[] { 4, 3, 5 }); set.IntersectWith(other); Assert.Equal(new[] { 3, 4, 5 }, set); }