code: public UriComponentsBuilder query(String query) {
  		if (query != null) {
  			Matcher matcher = QUERY_PARAM_PATTERN.matcher(query);
  			while (matcher.find()) {
  				String name = matcher.group(1);
  				String eq = matcher.group(2);
  				String value = matcher.group(3);
  				queryParam(name, (value != null ? value : (StringUtils.hasLength(eq) ? "" : null)));
  			}
  		}
  		else {
  			this.queryParams.clear();
  		}
  		resetSchemeSpecificPart();
  		return this;
  	}
docs: Append the given query to the existing query of this builder.
  The given query may contain URI template variables.
  <p><strong>Note:</strong> The presence of reserved characters can prevent
  correct parsing of the URI string. For example if a query parameter
  contains {@code '='} or {@code '&'} characters, the query string cannot
  be parsed unambiguously. Such values should be substituted for URI
  variables to enable correct parsing:
  <pre class="code">
  String uriString = &quot;/hotels/42?filter={value}&quot;;
  UriComponentsBuilder.fromUriString(uriString).buildAndExpand(&quot;hot&amp;cold&quot;);
  </pre>
  @param query the query string
  @return this UriComponentsBuilder