public class List<X> { public class Comp<Y> { public List<Y>.Comp<X> flip (Y y, X x) { return new Flip<Y> (this); } } public class Flip<Z> : List<Z>.Comp<X> { Comp<Z> c; public Flip (Comp<Z> cc) { c = cc; } } } class C { public static int Main () { var a = new List<short>.Comp<bool> ().flip (true, 3); return 0; } }