class Fun {

    public static <T, R> Function<T, Optional<R>>
    tryOrOptional1(final @NotNull ThrowingFunction<? super T, R> mayThrowOnApply) {
        return compose1(result1(mayThrowOnApply), Result::toOptional);
    }

    private  Fun();

}