> Still don't get why you can not do: > interface SimpleCollector<T, R> extends Collector<T, R, R> { > ... > } Not all Collectors will have I=R. Consider toStringBuilder, where I=StringBuilder and R=String.