docs: @SuppressWarnings("unchecked")
  	private static void bindRequestParameters(UriComponentsBuilder builder,
  			AnnotatedParametersParameterAccessor.BoundMethodParameter parameter) {
  
  		Object value = parameter.getValue();
  		String key = parameter.getVariableName();
  
  		if (value instanceof MultiValueMap) {
  
  			MultiValueMap<String, String> requestParams = (MultiValueMap<String, String>) value;
  
  			for (Map.Entry<String, List<String>> multiValueEntry : requestParams.entrySet()) {
  				for (String singleEntryValue : multiValueEntry.getValue()) {
  					builder.queryParam(multiValueEntry.getKey(), encodeParameter(singleEntryValue));
  				}
  			}
  
  		} else if (value instanceof Map) {
  
  			Map<String, String> requestParams = (Map<String, String>) value;
  
  			for (Map.Entry<String, String> requestParamEntry : requestParams.entrySet()) {
  				builder.queryParam(requestParamEntry.getKey(), encodeParameter(requestParamEntry.getValue()));
  			}
  
  		} else if (value instanceof Collection) {
  
  			for (Object element : (Collection<?>) value) {
  				if (key != null) {
  					builder.queryParam(key, encodeParameter(element));
  				}
  			}
  
  		} else if (SKIP_VALUE.equals(value)) {
  
  			if (parameter.isRequired()) {
  				if (key != null) {
  					builder.queryParam(key, String.format("{%s}", parameter.getVariableName()));
  				}
  			}
  
  		} else {
  			if (key != null) {
  				builder.queryParam(key, encodeParameter(parameter.asString()));
  			}
  		}
  	}