Метод Optional.or был добавлен в Java 9. Это подпись метода
public Optional<T> or(Supplier<? extends Optional<? extends T>> supplier)
Почему берется параметр типа Supplier ? extends Optional ? extends Optional а не просто Optional, так как Optional является окончательным классом?
То же самое верно для метода Optional.flatMap. Это изменение от Java 8.
В Java 8 это была Function<? super T, Optional<U>> mapper Function<? super T, Optional<U>> mapper тогда как он был изменен на Function<? super T,? extends Optional<? extends U>> Function<? super T,? extends Optional<? extends U>> Function<? super T,? extends Optional<? extends U>> в Java 9.