interface D { } interface E { } class C : IDisposable, IEnumerable where T1 : class, D, E, new() where T2 : IDictionary> where TX : struct, IDisposable where T3 : class where T4 : D where T5 : E { void F() where T3 : D, new() where T4 : D where T5 : D where TX : new() where T6 : D { } class C2 : IDisposable, IEnumerable where T1 : class, D, E, new() where T2 : IDictionary> where TX : struct, IDisposable where T3 : class where T4 : D where T5 : E { void F2() where T3 : D, new() where T4 : D where T5 : D where TX : new() where T6 : D { } } }