} catch (IllegalArgumentException e) {
Class<?>[] argumentTypes = new Class<?>[arguments.length];
for (int i = 0; i < arguments.length; i++) {
argumentTypes[i] = arguments[i].getClass();
}
throw new ValidatorMethodException(validatorMethod.getName(), argumentTypes, e);
} catch (IllegalAccessException e) {
throw new ValidatorMethodException(validatorMethod.getName(),
fieldValidator, arguments, e);
} catch (InvocationTargetException e) {
if (e.getCause() instanceof ReportedValidationException) {
throw (ReportedValidationException) e.getCause();
}
throw new ValidatorMethodException(validatorMethod.getName(),
fieldValidator, arguments, (Exception) e.getCause());
}
}