private void StrictSetDisjoint <S1, S2>() where S1 : IStrictSet <int>, new() where S2 : IStrictSet <int>, new() { var s1 = new S1(); var s2 = new S2(); Fill(s1, 0, 1000); Fill(s2, 1000, 2000); Assert.True(s1.IsDisjointWith(s2)); var s3 = new S1(); var s4 = new S2(); Fill(s3, 0, 2000); Fill(s4, 1000, 2000); Assert.False(s3.IsDisjointWith(s4)); var s5 = new S1(); var s6 = new S2(); Assert.True(s5.IsDisjointWith(s6)); var s7 = new S1(); var s8 = new S2(); Fill(s7, 0, 1000); Assert.True(s7.IsDisjointWith(s8)); Assert.True(s8.IsDisjointWith(s7)); }