groupingUsed ? groupingSize + 1: 0);
groupingUsed ? groupingSize + 1: groupingSize);
  private final String computePattern (DecimalFormatSymbols syms)  {    StringBuffer mainPattern = new StringBuffer ();    // We have to at least emit a zero for the minimum number of    // digits.  Past that we need hash marks up to the grouping    // separator (and one beyond).    int total_digits = Math.max(minimumIntegerDigits,				groupingUsed ? groupingSize + 1: 0);    for (int i = 0; i < total_digits - minimumIntegerDigits; ++i)      mainPattern.append(syms.getDigit());    for (int i = total_digits - minimumIntegerDigits; i < total_digits; ++i)      mainPattern.append(syms.getZeroDigit());    // Inserting the gropuing operator afterwards is easier.    if (groupingUsed)      mainPattern.insert(mainPattern.length() - groupingSize,			 syms.getGroupingSeparator());    // See if we need decimal info.    if (minimumFractionDigits > 0 || maximumFractionDigits > 0	|| decimalSeparatorAlwaysShown)      mainPattern.append(syms.getDecimalSeparator());    for (int i = 0; i < minimumFractionDigits; ++i)      mainPattern.append(syms.getZeroDigit());    for (int i = minimumFractionDigits; i < maximumFractionDigits; ++i)      mainPattern.append(syms.getDigit());    if (useExponentialNotation)      {	mainPattern.append(syms.getExponential());	for (int i = 0; i < minExponentDigits; ++i)	  mainPattern.append(syms.getZeroDigit());	if (minExponentDigits == 0)	  mainPattern.append(syms.getDigit());      }    String main = mainPattern.toString();    String patChars = patternChars (syms);    mainPattern.setLength(0);    quoteFix (mainPattern, positivePrefix, patChars);    mainPattern.append(main);    quoteFix (mainPattern, positiveSuffix, patChars);    if (negativePrefix != null)      {	quoteFix (mainPattern, negativePrefix, patChars);	mainPattern.append(main);	quoteFix (mainPattern, negativeSuffix, patChars);      }    return mainPattern.toString();  }