code: public String toQueryString() {
          if (this.parameters == null) {
              return String.format("filter=%s", this.name);
          } else {
              List<String> queries = new ArrayList<String>();
  
              for(Map.Entry<String, String> parameter : this.parameters.entrySet()) {
                  queries.add(String.format("%s=%s", parameter.getKey(), parameter.getValue()));
              }
              Collections.sort(queries);
  
              queries.add(0, String.format("filter=%s", this.name));
  
              return Misc.join("&", queries);
          }
      }
docs: <p>Generate a string representation of this {@code Filter} object
  that is consistent for a given name and parameter set.</p>
  
  <p>The string is not intended for use in URLs as it's not
  escaped.</p>
  
  <p>Filter parameters are sorted by key so that the  generated
  String are the same for different calls. This is important
  because the String can therefore be part of the replication ID.</p>
  
  @return query string like representation of the filter
  
  @see PullStrategy#getReplicationId()