import java.util.*; public class MethodFailure4 { public static String call(A obj) { return "A"; } public static String call(I obj) { return "I"; } interface I {} static class A {} static class B extends A implements I {} static class C extends B {} public static A getA() { return new A(); } public static B getB() { return new B(); } public static C getC() { return new C(); } public static I getI() { return new C(); } // this method invocation is ambiguous public static void main(String[] argv) { call( getC() ); } }