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 { } } }