interface IX { void M () where TO : TI; } interface IY { } class CY : IY { } class A : IX { public void M () where TO : IY { } public static void Main () { var a = new A (); a.M (); } }