docs: synchronized public void parseParameters()
      {
          if (TraceComponent.isAnyTracingEnabled()&&logger.isLoggable (Level.FINE)) {  //306998.15
              logger.logp(Level.FINE, CLASS_NAME,"parseParameters", "");
          }
          if (WCCustomProperties.CHECK_REQUEST_OBJECT_IN_USE){
              checkRequestObjectInUse();
          }
          
          SRTServletRequestThreadData reqData = SRTServletRequestThreadData.getInstance();
  
          if (reqData.getParameters() != null)
              return;
  
          //PM03928 - start
          if (TraceComponent.isAnyTracingEnabled()&&logger.isLoggable (Level.FINE)) {  //306998.15
              logger.logp(Level.FINE, CLASS_NAME,"parseParameters", "set _parametersRead");
          }
          _srtRequestHelper._parametersRead = true;                               
  
          //PM03928 - end
  
          try
          {
              reqData.setParameters(new Hashtable());
              String ct = getContentType();
  
              if (ct != null)
              {
                  ct = ct.toLowerCase();
                  if (TraceComponent.isAnyTracingEnabled()&&logger.isLoggable (Level.FINE))
                      logger.logp(Level.FINE, CLASS_NAME,"parseParameters", "Content type -->" + ct);
  
                  if (ct.startsWith("java-internal"))
                  {
                      String[] values = { ct };
                      reqData.getParameters().put(new String("Application specific data. Content-type "), values);
                      return;
                  }
              }
          }
          catch (Exception npe)
          {
              com.ibm.wsspi.webcontainer.util.FFDCWrapper.processException(npe, "com.ibm.ws.webcontainer.srt.SRTServletRequest.parseParameters", "667", this);
              logger.logp(Level.INFO, CLASS_NAME,"parseParameters", "Exception thrown during parsing of parameters", npe.toString());
              return;
          }
  
          if (TraceComponent.isAnyTracingEnabled()&&logger.isLoggable (Level.FINE)) {  //306998.15
              logger.logp(Level.FINE, CLASS_NAME,"parseParameters", "Content type is not java-internal");
          }
  
          String method = getMethod();
  
          if (method.equalsIgnoreCase("post"))
              // end pq70055: part 1
          {
              String contentType = getContentType();
              if (contentType != null && contentType.startsWith("application/x-www-form-urlencoded"))
              {
                  // Only read parameters from post data if app has not already go a reader or input stream.
                  // See servlet spec section 3.1.1 - When parameters are available.     
                  
                  if (this.multiReadPropertyEnabled) {
                      if (_srtRequestHelper._InputStreamClosed) {
                          ((SRTInputStream) this._in).restart();
                      }
                  }
                  
                  if (!_srtRequestHelper._gotInputStream && !_srtRequestHelper._gotReader) {
                      try
                      {
                          reqData.setParameters(parsePostData());
                      }
                      catch (IOException io)
                      {
                          com.ibm.wsspi.webcontainer.util.FFDCWrapper.processException(io, "com.ibm.ws.webcontainer.srt.SRTServletRequest.parseParameters", "765", this);
                          logger.logp(Level.SEVERE, CLASS_NAME,"parseParameters", "Error.Parsing.Parameters", io);
                      }
                      finally
                      {
                           releaseInputStream(); //Let go of the InputStream now that we're done with it.
                      }
                  } else if (TraceComponent.isAnyTracingEnabled()&&logger.isLoggable (Level.FINE)) {  //306998.15
                      logger.logp(Level.FINE, CLASS_NAME,"parseParameters", "ignoring post data gotReader="+_srtRequestHelper._gotReader + ", gotInputStream = " + _srtRequestHelper._gotInputStream);
                  }  
                  if (reqData.getParameters() != null)
                  {
                      parseQueryStringList(); // 256836
                  }
              }
              if (contentType != null && contentType.startsWith("multipart/form-data"))
              {
                  if (reqData.getParameters() != null)
                  {
                      parseQueryStringList();	//256836
                      try {
                          prepareMultipart();
                          StringBuffer value=new StringBuffer("");
  
                          if (TraceComponent.isAnyTracingEnabled()&&logger.isLoggable (Level.FINE))
                              logger.logp(Level.FINE, CLASS_NAME,"parseParameters", "multipart size: "+_srtRequestHelper.multipartPartsHashMap.size());
  
                          for (String partName:_srtRequestHelper.multipartPartsHashMap.keySet()) {                                           
  
                              ArrayList<Part> plist = (ArrayList)_srtRequestHelper.multipartPartsHashMap.get(partName); //91002
                              if (plist!=null) {   
  
                                  // Iterate over partList to check if they are valid to add as parameter                                    
                                  for (Iterator<Part> it = plist.iterator(); it.hasNext(); ) 
                                  {
                                      Part p  = it.next(); 
                                      value.setLength(0);
                                      if (((SRTServletRequestPart)p).isFormField()) { //only add the parameter if it's not a file
                                          InputStream partInputStream = p.getInputStream(); 
                                          BufferedReader reader;
                                          InputStreamReader streamReader;
                                          if(WCCustomProperties.PARSE_PARTS_PARAMETERS_USING_REQUEST_ENCODING){
                                              if (TraceComponent.isAnyTracingEnabled()&&logger.isLoggable (Level.FINE))
                                                  logger.logp(Level.FINE, CLASS_NAME,"parseParameters", "Parsing multipart form fields using request encoding");
                                              streamReader = new InputStreamReader(partInputStream, getReaderEncoding());
                                              reader = new BufferedReader(streamReader);
                                          }
                                          else{
                                              streamReader = new InputStreamReader(partInputStream);
                                              reader = new BufferedReader(streamReader);
                                          }
                                          String line=null;
                                          try {
                                              if (!WCCustomProperties.KEEP_SEPARATOR_IN_MULTIPART_FORM_FIELDS) {
                                                  while ((line = reader.readLine()) != null) {
                                                      value.append(line);
                                                  }
                                              }
                                              else {
                                                  int read = -1;
                                                  int size = (int)p.getSize();
                                                  char[] buffer = new char[size];
  
                                                  read = streamReader.read(buffer, 0, size);
                                                  value.append(buffer, 0, read);
                                                  if (TraceComponent.isAnyTracingEnabled() && logger.isLoggable (Level.FINE))
                                                      logger.logp(Level.FINE, CLASS_NAME,"parseParameters", "Parsing multipart form field keeping line separators, partName-> "+partName+", partSize-> "+size+", read-> "+read);
                                              }
                                          }
                                          finally {
                                              partInputStream.close();
                                              reader.close();
                                              streamReader.close();
                                          }
  
  
                                          if(reqData.getParameters().containsKey(partName)){
  
                                              String[] oldValues = (String[]) reqData.getParameters().get(partName);
                                              String[] valArray  = new String[oldValues.length+1];
  
                                              System.arraycopy(oldValues, 0, valArray, 0, oldValues.length);
                                              valArray[oldValues.length] = value.toString();
                                              reqData.getParameters().put(partName,valArray);
  
                                          }
                                          else{
  
                                              String[] values = { value.toString() };
                                              reqData.getParameters().put(partName, values);
                                          }
                                      }
  
                                  }                          
                              }
                          }
                      } //724365.2 Start
                      catch (UnsupportedOperationException uoe){
                          // take care of Portal or any other customer using own logic of handling Multipart form
                          if (TraceComponent.isAnyTracingEnabled()&&logger.isLoggable (Level.FINE)) {
                              logger.logp(Level.FINE, CLASS_NAME,"parseParameters", "Error parsing parameters, maybe no MutliPartConfig defined in servlet. ", uoe);
                          }                               
                      }
                      catch (IllegalArgumentException iae) {              
                          // take care of max number of parameters allowed                                        
                          logger.logp(Level.SEVERE, CLASS_NAME,"parseParameters", "Error.Parsing.Parameters", iae);                                                                       
                          throw iae;              
                      }
                      catch (Exception e) {
  
                          if(WCCustomProperties.LOG_MULTIPART_EXCEPTIONS_ON_PARSEPARAMETER){                                                                     
                              logger.logp(Level.SEVERE, CLASS_NAME,"parseParameters", "Error.Parsing.Parameters", e);                                                                                                         
                          }
                          else{                                   
                              if (TraceComponent.isAnyTracingEnabled()&&logger.isLoggable (Level.FINE)) {
                                  logger.logp(Level.FINE, CLASS_NAME,"parseParameters", "Error.Parsing.Parameters", e);
                              }
                          }
                      }
                      //724365.2 End
  
                  }
              }
              // begin pq70031: need to check if param list is empty in addition to null		
              if (( reqData.getParameters() == null || reqData.getParameters().isEmpty()))
                  // end pq70031
              {
                  parseQueryStringList(); // 256836
              }
          }
          // begin pq70055: part 2: failed to parse query string for head requests
          else
          {
              parseQueryStringList(); // 256836
          }
          // end pq70055: part 2
          if (reqData.getParameters() == null)
          {
              reqData.setParameters(new Hashtable());
          }
      }