package source; abstract class X implements T { @Override public S foo(S s) { return null; } } class Y implements T { @Override public String foo(String s) { return null; } } class Z implements T { @Override public Boolean foo(Boolean b) { return null; } } interface U extends T { }