class G { } interface I { void Foo () where T : G; } class A : I { public void Foo () where U : G { } public static void Main () { } }