code: public Map<String, Object> toMap() {
      JsonObject json = GSON.toJsonTree(this).getAsJsonObject();
      return UNTYPED_MAP_DESERIALIZER.deserialize(json);
    }
docs: Convenient method to convert this typed request params into an untyped map. This map is
  composed of {@code Map<String, Object>}, {@code List<Object>}, and basic Java data types.
  This allows you to test building the request params and verify compatibility with your
  prior integrations using the untyped params map
  {@link ApiResource#request(ApiResource.RequestMethod, String, Map, Class, RequestOptions)}.
  
  <p>The peculiarity of this conversion is that `EMPTY` {@link EnumParam} with raw
  value of empty string will be converted to null. This is compatible with the existing
  contract enforcing no empty string in the untyped map params.
  
  <p>Because of the translation from `EMPTY` enum to null, deserializing this map back to a
  request instance is lossy. The null value will not be converted back to the `EMPTY` enum.