docs: public final Try<T, A> catching(Function<? super T, ? extends Boolean> predicate,
                                      Function<? super T, ? extends A> recoveryFn) {
          return match(t -> predicate.apply(t) ? success(recoveryFn.apply(t)) : failure(t), Try::success);
      }