I know that similar questions have been asked (here, here, here), but none of the answers seem to apply to my case.
Consider the following set of interfaces:
public interface I1<X> {
    void method(X arg);
}
public interface I2 {
    void method(String arg);
}
public interface I3 extends I1<String>, I2 {
    // empty
}
Now I want to call method(String) on an instance of I3, like so:
public class C implements I3 {
    public void method(String arg) {
        // does nothing
    }
    public static void main(String[] args) {
        ((I3) new C()).method("arg");
    }
}
The OpenJDK (Java 7 or 8, doesn't matter) flags an incompatibility error here:
generics\C.java:10: error: reference to method is ambiguous
    ((I3) new C()).method("arg");
                  ^
both method method(String) in I2 and method method(X) in I1 match
where X is a type-variable:
    X extends Object declared in interface I1
Since X is instantiated to String in I3, I do not see where the problem comes from. Note that Eclipse considers this to be fine.
 
     
    