docs: @SuppressWarnings("unchecked")
  	public static Throwable getCausedBy(Throwable throwable, Class<? extends Exception>... causeClasses) {
  		Throwable cause = throwable;
  		while (cause != null) {
  			for (Class<? extends Exception> causeClass : causeClasses) {
  				if (causeClass.isInstance(cause)) {
  					return cause;
  				}
  			}
  			cause = cause.getCause();
  		}
  		return null;
  	}