code: public QueryHints with(QueryHint hint, Object value) {
          if (hint == null) {
              throw new IllegalArgumentException("Null hint");
          }
          if (value == null) {
              throw new IllegalArgumentException("Null value");
          }
          EnumMap<QueryHint, Object> map;
          if (mMap == null) {
              map = new EnumMap<QueryHint, Object>(QueryHint.class);
          } else {
              map = mMap.clone();
          }
          map.put(hint, value);
          return new QueryHints(map);
      }
docs: Returns a new QueryHints object with the given hint and value.
  
  @throws IllegalArgumentException if hint or value is null