code: public static void rethrow(Throwable t, String parentMessage) {
  		if (t instanceof Error) {
  			throw (Error) t;
  		}
  		else if (t instanceof RuntimeException) {
  			throw (RuntimeException) t;
  		}
  		else {
  			throw new RuntimeException(parentMessage, t);
  		}
  	}
docs: Throws the given {@code Throwable} in scenarios where the signatures do not allow you to
  throw an arbitrary Throwable. Errors and RuntimeExceptions are thrown directly, other exceptions
  are packed into a parent RuntimeException.
  
  @param t The throwable to be thrown.
  @param parentMessage The message for the parent RuntimeException, if one is needed.