public static <T> T require(T reference, Predicate<T> predicate,
                                @Nullable String message,
                                @Nullable Object... args) {
        return check(reference, predicate, RequireViolation.class, message, args);
    }
public static < T > T require ( T reference , Predicate < T > predicate , @ Nullable String message , @ Nullable Object ... args ) { return check ( reference , predicate , RequireViolation . class , message , args ) ; }
Precondition that clients are required to fulfill.
Violations are considered to be programming errors, on the clients part.

@param <T>       type of object to check
@param reference the reference to check
@param predicate the predicate that the given reference must satisfy
@param message   the fail message template
@param args      the message template arguments
@return the validated object
@throws RequireViolation if the <tt>predicate</tt> is <b>false</b>