using System; namespace Test { public static class Extensions { public static void Ext0(this string self, T arg) { } public static void Ext1(this string self, int arg) { } public static void Ext2(this T self, int arg) { } public static void Ext3(this T self, int arg) { self.Ext3(arg); } public static void Ext4(this T self, int arg) { Ext4(self, arg); } } public class Program { public static void M() { "".Ext0(1); "".Ext0(1); "".Ext0(1); "".Ext0(null); Extensions.Ext0("", 1); Extensions.Ext0("", 1); Extensions.Ext0("", 1); Extensions.Ext0("", null); "".Ext1(1); Extensions.Ext1("", 1); 1.Ext2(1); 1.Ext2(1); "".Ext2(1); "".Ext2(1); "".Ext2(1); Extensions.Ext2(1, 1); Extensions.Ext2(1, 1); Extensions.Ext2("", 1); Extensions.Ext2("", 1); Extensions.Ext2("", 1); } } }