I see.
Stream.empty().min( (a, b) -> 6) is equivalent to Stream.<Object>empty().min( (a, b) -> 6).
And therefore Stream.<Object>empty().min( (a, b) -> 6) can be assigned to Optional<?> or Optional<Object>.
And if I explicitly say Stream.<Stream>empty().min( (a, b) -> 6), then I must assigned it to Optional<
String> or Optional<?>.