code: public static <T> T check(T reference, Predicate<T> predicate, @Nullable Object errorMessage) {
          check(reference, predicate, String.valueOf(errorMessage), EMPTY_ERROR_MESSAGE_ARGS);
          return reference;
      }
docs: Performs check with the predicate.
  
  @param reference    the reference to check
  @param predicate    the predicate to use
  @param errorMessage the exception message to use if the check fails; will
  be converted to a string using {@link String#valueOf(Object)}
  @param <T>          the reference type
  @return the original reference
  @throws IllegalArgumentException if the {@code reference} is empty
  @throws NullPointerException     if the {@code reference} is null
  @see #checkNotEmpty(Object, String, Object...)