code: public List<Pair> parameterToPairs(String collectionFormat, String name, Object value){
      List<Pair> params = new ArrayList<Pair>();
  
      // preconditions
      if (name == null || name.isEmpty() || value == null) return params;
  
      Collection<?> valueCollection = null;
      if (value instanceof Collection<?>) {
        valueCollection = (Collection<?>) value;
      } else {
        params.add(new Pair(name, parameterToString(value)));
        return params;
      }
  
      if (valueCollection.isEmpty()){
        return params;
      }
  
      // get the collection format
      collectionFormat = (collectionFormat == null || collectionFormat.isEmpty() ? "csv" : collectionFormat); // default: csv
  
      // create the params based on the collection format
      if (collectionFormat.equals("multi")) {
        for (Object item : valueCollection) {
          params.add(new Pair(name, parameterToString(item)));
        }
  
        return params;
      }
  
      String delimiter = ",";
  
      if (collectionFormat.equals("csv")) {
        delimiter = ",";
      } else if (collectionFormat.equals("ssv")) {
        delimiter = " ";
      } else if (collectionFormat.equals("tsv")) {
        delimiter = "\t";
      } else if (collectionFormat.equals("pipes")) {
        delimiter = "|";
      }
  
      StringBuilder sb = new StringBuilder() ;
      for (Object item : valueCollection) {
        sb.append(delimiter);
        sb.append(parameterToString(item));
      }
  
      params.add(new Pair(name, sb.substring(1)));
  
      return params;
    }
docs: /*
  Format to {@code Pair} objects.