docs: private ReturnCodes parseQValue(byte[] data, int start) {
          // 414433 - redo the qvalue parsing to handle more error conditions
  
          ReturnCodes rc = new ReturnCodes(false);
          int len = data.length;
          int index = skipWhiteSpace(data, start);
          // we should be pointing at "q=X"
          // technically it's supposed to be just 'q', but check uppercase too
          if (index >= len || ('q' != data[index] && 'Q' != data[index])) {
              if (TraceComponent.isAnyTracingEnabled() && tc.isDebugEnabled()) {
                  Tr.debug(tc, "Non qvalue found");
              }
              rc.setIntValue(index);
              return rc;
          }
          index++;
          index = skipWhiteSpace(data, index);
          if (index >= len || HttpBaseMessage.EQUALS != data[index]) {
              if (TraceComponent.isAnyTracingEnabled() && tc.isDebugEnabled()) {
                  Tr.debug(tc, "Qvalue missing equals");
              }
              rc.setIntValue(index);
              return rc;
          }
          index++;
          index = skipWhiteSpace(data, index);
          // now we should be pointing at a float value
          if (index < len && ('1' == data[index] || '0' == data[index])) {
              // default the "approval" flag based on leading digit
              boolean leadingOne = ('1' == data[index]);
              rc.setBooleanValue(leadingOne);
              if (++index >= len || ',' == data[index]) {
                  // reached end of data, single digit
              } else if (' ' == data[index] || '\t' == data[index]) {
                  // whitespace, scan for the comma
                  index = skipWhiteSpace(data, index);
                  if (index < len && ',' != data[index]) {
                      // nonwhitespace found [q=1 q] invalid
                      if (TraceComponent.isAnyTracingEnabled() && tc.isDebugEnabled()) {
                          Tr.debug(tc, "Invalid char after trailing whitespace (1) ["
                                       + data[index] + "]");
                      }
                      rc.setBooleanValue(false);
                  }
              } else if ('.' != data[index]) {
                  // required to be a period for the float
                  if (TraceComponent.isAnyTracingEnabled() && tc.isDebugEnabled()) {
                      Tr.debug(tc, "Non-period found after leading digit");
                  }
                  rc.setBooleanValue(false);
              } else {
                  // now we must only have up to 3 digits, or 1.000
                  // stop at eol, whitespace, or comma
                  int numDigits = 0;
                  while (++index < len && ',' != data[index]) {
                      if ('0' <= data[index] && '9' >= data[index]) {
                          numDigits++;
                          if ('0' != data[index]) {
                              if (leadingOne) {
                                  // 1.000 is the only valid 1* value
                                  if (TraceComponent.isAnyTracingEnabled() && tc.isDebugEnabled()) {
                                      Tr.debug(tc, "Non-zero after a leading one");
                                  }
                                  rc.setBooleanValue(false);
                                  break; // out of while
                              }
                              rc.setBooleanValue(true);
                          }
                      } else {
                          // non-digit found
                          break; // out of while
                      }
                  } // while not end of data
                  if (3 < numDigits) {
                      // too many digits
                      if (TraceComponent.isAnyTracingEnabled() && tc.isDebugEnabled()) {
                          Tr.debug(tc, "Too many digits in float (" + numDigits + ")");
                      }
                      rc.setBooleanValue(false);
                  } else if (index >= len || ',' == data[index]) {
                      // end of qvalue found
                  } else if (' ' == data[index] || '\t' == data[index]) {
                      // whitespace, scan for the comma
                      index = skipWhiteSpace(data, ++index);
                      if (index < len && ',' != data[index]) {
                          if (TraceComponent.isAnyTracingEnabled() && tc.isDebugEnabled()) {
                              Tr.debug(tc, "Invalid char after trailing whitespace (2) ["
                                           + data[index] + "]");
                          }
                          rc.setBooleanValue(false);
                      }
                  } else {
                      // invalid character found
                      if (TraceComponent.isAnyTracingEnabled() && tc.isDebugEnabled()) {
                          Tr.debug(tc, "Invalid char after number [" + data[index] + "]");
                      }
                      rc.setBooleanValue(false);
                  }
              }
          } // starts with a digit
  
          // index is pointing to the last char looked at
          rc.setIntValue(index);
          return rc;
      }