docs: @SuppressWarnings("unchecked")
  	public static <T extends Throwable> T convertFromOrSuppressedThrowable(Throwable throwable, Class<T> exceptionClass, boolean checkCause) {
  		if (throwable == null || exceptionClass == null) {
  			return null;
  		}
  		if (exceptionClass.isAssignableFrom(throwable.getClass())) {
  			return (T) throwable;
  		}
  		if (checkCause) {
  			Throwable cause = throwable.getCause();
  			if (cause != null && exceptionClass.isAssignableFrom(cause.getClass())) {
  				return (T) cause;
  			}
  		}
  		Throwable[] throwables = throwable.getSuppressed();
  		if (ArrayUtil.isNotEmpty(throwables)) {
  			for (Throwable throwable1 : throwables) {
  				if (exceptionClass.isAssignableFrom(throwable1.getClass())) {
  					return (T) throwable1;
  				}
  			}
  		}
  		return null;
  	}