class C { public int M (object d, long s) { return 1; } public int M (long s, object d) { return 2; } public int M (dynamic d, dynamic s) { return 3; } public int M2 (object d) { return 1; } public int M2 (byte s) { return 2; } } public class Test { public static int Main () { dynamic d = new C (); byte s = 5; object o = 2; int v = d.M (s, o); if (v != 2) return 1; v = d.M2 (1 + 3); if (v != 2) return 2; return 0; } }