code: public Request param(String name, Object value) {
          if (params == null) {
              params = new LinkedHashMap<String, Object>();
          }
          if (multipleValues) {
              Object currentValue = params.get(name);
              if (currentValue != null) {
                  if (currentValue instanceof Collection) {
                      Collection<Object> values = (Collection) currentValue;
                      values.add(value);
                  } else {
                      // upgrade single value to set of values
                      Collection<Object> values = new ArrayList<Object>();
                      values.add(currentValue);
                      values.add(value);
                      params.put(name, values);
                  }
                  return this;
              }
          }
          params.put(name, value);
          return this;
      }
docs: Set (or overwrite) a parameter.
  <br>
  The parameter will be used to create a query string for GET-requests and as the body for POST-requests
  with MIME-type <code>application/x-www-form-urlencoded</code>.
  <br>
  Please see {@link #multipleValues()} if you have to deal with parameters carrying multiple values.
  <br>
  Handling of multi-valued parameters exists since version 1.3.0
  
  @param name the name of the parameter (it's better to use only contain ASCII characters)
  @param value the value of the parameter; <code>null</code> will be converted to empty string,
  Arrays of Objects are expanded to multiple valued parameters, for all other
  objects to <code>toString()</code> method converts it to String
  @return <code>this</code> for method chaining (fluent API)