Did you look at the Stream interface and the rationale for why they did what they did? I'm concerned about becoming inconsistent with Stream.collect