code: public static <T extends Throwable, L, R> Either<L, R> trying(CheckedSupplier<T, ? extends R> supplier,
                                                                    Function<? super T, ? extends L> leftFn) {
          return Try.<T, R>trying(supplier::get).toEither(leftFn);
      }
docs: Attempt to execute the {@link CheckedSupplier}, returning its result in a right value. If the supplier throws an
  exception, apply leftFn to it, wrap it in a left value and return it.
  
  @param supplier the supplier of the right value
  @param leftFn   a function mapping E to L
  @param <T>      the most contravariant exception that the supplier might throw
  @param <L>      the left parameter type
  @param <R>      the right parameter type
  @return the supplier result as a right value, or leftFn's mapping result as a left value