@SuppressWarnings({ "unchecked", "rawtypes" })
public static <T> T mustBeLessThanOrEqualToOther(
String parameterName,
T argument,
String maximumParameterName,
T maximumValue,
Comparator<? super T> comparator) {
if (comparator == null) {
return (T)mustBeLessThanOrEqualToOther(
parameterName,
(Comparable)argument,
maximumParameterName,
(Comparable)maximumValue);
}
if (argument != null && maximumValue != null && comparator.compare(argument, maximumValue) > 0) {
throw new IllegalArgumentException(
mustBeGreaterThanOtherMessage(parameterName, maximumParameterName));
}
return argument;
}