code: private void appendRequestParams(FastStringWriter actualUriBuf, Map<Object, Object> params, String encoding) {
  
          boolean querySeparator = false;
  
          for (Map.Entry<Object, Object> entry : params.entrySet()) {
              Object name = entry.getKey();
              if (name.equals(GrailsControllerClass.CONTROLLER) || name.equals(GrailsControllerClass.ACTION) || name.equals(ARGUMENT_ID)) {
                  continue;
              }
  
              if (!querySeparator) {
                  actualUriBuf.append('?');
                  querySeparator = true;
              }
              else {
                  actualUriBuf.append(ENTITY_AMPERSAND);
              }
              Object value = entry.getValue();
              if (value instanceof Collection) {
                  Collection values = (Collection) value;
                  Iterator valueIterator = values.iterator();
                  while (valueIterator.hasNext()) {
                      Object currentValue = valueIterator.next();
                      appendRequestParam(actualUriBuf, name, currentValue, encoding);
                      if (valueIterator.hasNext()) {
                          actualUriBuf.append(ENTITY_AMPERSAND);
                      }
                  }
              }
              else if (value != null && value.getClass().isArray()) {
                  Object[] array = (Object[]) value;
                  for (int j = 0; j < array.length; j++) {
                      Object currentValue = array[j];
                      appendRequestParam(actualUriBuf, name, currentValue, encoding);
                      if (j < (array.length-1)) {
                          actualUriBuf.append(ENTITY_AMPERSAND);
                      }
                  }
              }
              else {
                  appendRequestParam(actualUriBuf, name, value, encoding);
              }
          }
      }
docs: /*
  Appends all the request parameters to the URI buffer