package test; public interface DeeplySubstitutedClassParameter { public interface Super { void foo(T p); void dummy(); // to avoid loading as SAM interface } public interface Middle extends Super { void foo(E p); } public interface Sub extends Middle { void foo(String p); } }