docs: @SuppressWarnings("unchecked")
      public final <S extends T> Try<T, A> catching(Class<S> throwableType, Function<? super S, ? extends A> recoveryFn) {
          return catching(throwableType::isInstance, t -> recoveryFn.apply((S) t));
      }