code: @CanIgnoreReturnValue
    public static <T> T verifyNotNull(
        @Nullable T reference,
        @Nullable String errorMessageTemplate,
        @Nullable Object @Nullable ... errorMessageArgs) {
      verify(reference != null, errorMessageTemplate, errorMessageArgs);
      return reference;
    }
docs: Ensures that {@code reference} is non-null, throwing a {@code VerifyException} with a custom
  message otherwise.
  
  @param errorMessageTemplate a template for the exception message should the check fail. The
  message is formed by replacing each {@code %s} placeholder in the template with an
  argument. These are matched by position - the first {@code %s} gets {@code
  errorMessageArgs[0]}, etc. Unmatched arguments will be appended to the formatted message in
  square braces. Unmatched placeholders will be left as-is.
  @param errorMessageArgs the arguments to be substituted into the message template. Arguments
  are converted to strings using {@link String#valueOf(Object)}.
  @return {@code reference}, guaranteed to be non-null, for convenience
  @throws VerifyException if {@code reference} is {@code null}
  @see Preconditions#checkNotNull Preconditions.checkNotNull()