. > > I also think that all Supplier<T> should be Supplier<? extends T>. > > But why ? If S extends R: Supplier<S> ss = .. S s = stream.collect(ss,..,..) So also: R r = stream.collect(ss,) ? Thanks Boaz