interface Interface<TImplementer> where TImplementer : Interface<TImplementer> { void Combine<TOImplementer> () where TOImplementer : Interface<TOImplementer>; } class Implementer : Interface<Implementer> { public void Combine<TOImplementer> () where TOImplementer : Interface<TOImplementer> { } } class MainClass { public static int Main () { new Implementer (); return 0; } }