code: public static <T> T requireNonNull(T obj, String message) {
          if (obj == null) {
              throw new IllegalArgumentException(message);
          }
          return obj;
      }
docs: Checks that the specified object reference is not {@code null} and throws a customized {@link IllegalArgumentException} if it is. <br>
  Essentially this is very much the same as {@link Objects#requireNonNull(Object, String)} but throws an {@link IllegalArgumentException} as opposed to the
  {@link NullPointerException} the SDK class throws.
  
  @param <T>
  The type of the object
  @param obj
  The object to be validated
  @param message
  detail message to be used in the event that a {@code IllegalArgumentException} is thrown
  @return The provided object in case it was non-null
  @throws IllegalArgumentException
  If the provided object was <code>null</code>
  @since 1.3