@Override
  public UriBuilder replaceQueryParam(String name, Object... values) {
    checkSsp();

    if (queryParams == null) {
      queryParams = UriComponent.decodeQuery(query.toString(), false);
      query.setLength(0);
    }

    name = encode(name, UriComponent.Type.QUERY_PARAM);
    queryParams.remove(name);

    if (values == null) {
      return this;
    }

    for (Object value : values) {
      if (value == null) {
        throw new IllegalArgumentException("One or more of query value parameters are null");
      }

      queryParams.add(name, encode(value.toString(), UriComponent.Type.QUERY_PARAM));
    }
    return this;
  }