docs: public static <T1, T2, R> Optional<R> zip(final Optional<? extends T1> f, final Iterable<? extends T2> v,
              final BiFunction<? super T1, ? super T2, ? extends R> fn) {
          return narrow(Option.fromOptional(f)
                             .zip(v, fn)
                             .toOptional());
      }