@Override public boolean test(T argument) { return !mine.test(argument); }
@Override public String invalidMessage(T argument) { return (mine.test(argument) ? other : mine).invalidMessage(argument); }
/** * Validates an argument. * * @param argument * argument to validate * @return the argument, if validation passes * @throws IllegalArgumentException * if validation fails */ public final T validate(final T argument) { if (!test(argument)) throw new IllegalArgumentException(invalidMessage(argument)); return argument; }