package source; abstract class X implements T { @Override public S getFoo() { return null; } @Override public void setFoo(S s) { } } class Y implements T { @Override public void setFoo(String s) { } @Override public String getFoo() { return null; } } class Z implements T { @Override public Boolean getFoo() { return null; } @Override public void setFoo(Boolean b) { } } class W implements T { @Override public Integer getFoo() { return null; } @Override public void setFoo(Integer integer) { } } interface U extends T { }