import java.lang.*;
class Test {
public static class FilterResult {}
public static class WrappedFilterResult<T, FR extends FilterResult> extends FilterResult {}
public interface ACComparator<FR extends FilterResult> {}
public static <FR extends FilterResult, T>
void filter1(ACComparator<? super WrappedFilterResult<? super T, ? super FR>> comparator) {
// both compile fine with normal Java compiler
// but error with Eclipse JDT compiler (I'm using Eclipse 4.9.0)
filter1(comparator);
filter2(comparator);
}
public static <FR extends FilterResult, T>
void filter2(ACComparator<? super WrappedFilterResult<? super T, ? super FR>> comparator) {
// implementaion...
}
}
aW1wb3J0IGphdmEubGFuZy4qOwpjbGFzcyBUZXN0IHsKCXB1YmxpYyBzdGF0aWMgY2xhc3MgRmlsdGVyUmVzdWx0IHt9CiAgICBwdWJsaWMgc3RhdGljIGNsYXNzIFdyYXBwZWRGaWx0ZXJSZXN1bHQ8VCwgRlIgZXh0ZW5kcyBGaWx0ZXJSZXN1bHQ+IGV4dGVuZHMgRmlsdGVyUmVzdWx0IHt9CiAgICBwdWJsaWMgaW50ZXJmYWNlIEFDQ29tcGFyYXRvcjxGUiBleHRlbmRzIEZpbHRlclJlc3VsdD4ge30KCiAgICBwdWJsaWMgc3RhdGljIDxGUiBleHRlbmRzIEZpbHRlclJlc3VsdCwgVD4KICAgICAgICB2b2lkIGZpbHRlcjEoQUNDb21wYXJhdG9yPD8gc3VwZXIgV3JhcHBlZEZpbHRlclJlc3VsdDw/IHN1cGVyIFQsID8gc3VwZXIgRlI+PiBjb21wYXJhdG9yKSB7CiAgICAgICAgLy8gYm90aCBjb21waWxlIGZpbmUgd2l0aCBub3JtYWwgSmF2YSBjb21waWxlcgogICAgICAgIC8vIGJ1dCBlcnJvciB3aXRoIEVjbGlwc2UgSkRUIGNvbXBpbGVyIChJJ20gdXNpbmcgRWNsaXBzZSA0LjkuMCkKICAgICAgICBmaWx0ZXIxKGNvbXBhcmF0b3IpOwogICAgICAgIGZpbHRlcjIoY29tcGFyYXRvcik7CiAgICB9CgogICAgcHVibGljIHN0YXRpYyA8RlIgZXh0ZW5kcyBGaWx0ZXJSZXN1bHQsIFQ+CiAgICAgICB2b2lkIGZpbHRlcjIoQUNDb21wYXJhdG9yPD8gc3VwZXIgV3JhcHBlZEZpbHRlclJlc3VsdDw/IHN1cGVyIFQsID8gc3VwZXIgRlI+PiBjb21wYXJhdG9yKSB7CiAgICAgICAvLyBpbXBsZW1lbnRhaW9uLi4uCiAgICB9Cn0=