docs: @SafeVarargs
      public static <T, X extends Throwable> Try<T, X> withCatch(final CheckedSupplier<T, X> cf, final Class<? extends X>... classes) {
          Objects.requireNonNull(cf);
          try {
              return Try.success(cf.get());
          } catch (final Throwable t) {
              if (classes.length == 0)
                  return Try.failure((X) t);
              val error = Stream.of(classes)
                  .filter(c -> c.isAssignableFrom(t.getClass()))
                  .findFirst();
              if (error.isPresent())
                  return Try.failure((X) t);
              else
                  throw ExceptionSoftener.throwSoftenedException(t);
          }
  
      }