private final int scanFix (String pattern, int index, FormatBuffer buf,
private int scanFix (String pattern, int index, FormatBuffer buf,
  private final int scanFix (String pattern, int index, FormatBuffer buf,			     String patChars, DecimalFormatSymbols syms,			     boolean is_suffix)  {		int len = pattern.length();    boolean quoteStarted = false;    buf.clear();    		boolean multiplierSet = false;    while (index < len)      {			char c = pattern.charAt(index);	if (quoteStarted)	  {	    if (c == '\'')	      quoteStarted = false;	    else				buf.append(c);	    index++;	    continue;	  }	if (c == '\'' && index + 1 < len	    && pattern.charAt(index + 1) == '\'')	  {	    buf.append(c);	    index++;	  }	else if (c == '\'')	  {	    quoteStarted = true;	  }	else if (c == '\u00a4')	  {	    if (index + 1 < len && pattern.charAt(index + 1) == '\u00a4')	      {		buf.append(syms.getInternationalCurrencySymbol(), NumberFormat.Field.CURRENCY);		index++;	      }	    else	      buf.append(syms.getCurrencySymbol(), NumberFormat.Field.CURRENCY);	  }	else if (c == syms.getPercent())	  {				if (multiplierSet)	      throw new IllegalArgumentException ("multiplier already set " +						  "- index: " + index);				multiplierSet = true;				multiplier = 100;	    buf.append(c, NumberFormat.Field.PERCENT);	  }	else if (c == syms.getPerMill())	  {				if (multiplierSet)	      throw new IllegalArgumentException ("multiplier already set " +						  "- index: " + index);				multiplierSet = true;				multiplier = 1000;	    buf.append(c, NumberFormat.Field.PERMILLE);	  }	else if (patChars.indexOf(c) != -1)	  {				// This is a pattern character.				break;	  }	else				buf.append(c);	index++;		}    if (quoteStarted)      throw new IllegalArgumentException ("pattern is lacking a closing quote");		return index;	}