using System; static class Test1 { public class IOp<T> { } static void Foo<S,OP>(uint v) where OP : IOp<S> { } }; static class Test2 { public class IOp<T> { } static void Foo<T,OP>(uint v) where OP : IOp<T> { } }; class X { public static void Main () { } }