В oracle docs, это выглядит как
<U> Optional<U> flatMap(Function<? super T,Optional<U>> mapper)
Для mapper
как Function
он делает параметр контравариантным, но не делает возвращаемый тип ковариантным. Интересно, может ли mapper
быть (должен) быть
Function<? super T,Optional<? extends U>>
или
Function<? super T, ? extends Optional<? extends U>>
?