return format(locale, format, args);
if (closed) throw new FormatterClosedException();   int implicitArgumentIndex = 1; int previousArgumentIndex = 0;  try { fmtLocale = loc; format = fmt; length = format.length(); for (index = 0; index < length; ++index) { char c = format.charAt(index); if (c != '%') { out.append(c); continue; }  int start = index; advance();     int argumentIndex = parseArgumentIndex();  int flags = parseFlags(); int width = parseWidth(); int precision = parsePrecision(); char origConversion = format.charAt(index); char conversion = origConversion; if (Character.isUpperCase(conversion)) { flags |= FormattableFlags.UPPERCASE; conversion = Character.toLowerCase(conversion); }  Object argument = null; if (conversion == '%' || conversion == 'n') { if (argumentIndex != -1) {  throw new UnknownFormatConversionException("FIXME"); } } else { if (argumentIndex == -1) argumentIndex = implicitArgumentIndex++; else if (argumentIndex == 0) argumentIndex = previousArgumentIndex;  --argumentIndex; if (argumentIndex < 0 || argumentIndex >= args.length) throw new MissingFormatArgumentException(format.substring(start, index)); argument = args[argumentIndex]; }  switch (conversion) { case 'b': booleanFormat(argument, flags, width, precision, origConversion); break; case 'h': hashCodeFormat(argument, flags, width, precision, origConversion); break; case 's': stringFormat(argument, flags, width, precision, origConversion); break; case 'c': characterFormat(argument, flags, width, precision, origConversion); break; case 'd': checkFlags(flags & FormattableFlags.UPPERCASE, 0, 'd'); decimalConversion(argument, flags, width, precision, origConversion); break; case 'o': checkFlags(flags & FormattableFlags.UPPERCASE, 0, 'o'); hexOrOctalConversion(argument, flags, width, precision, 8, origConversion); break; case 'x': hexOrOctalConversion(argument, flags, width, precision, 16, origConversion); case 'e':  break; case 'f':  break; case 'g':  break; case 'a':  break; case 't': advance(); char subConversion = format.charAt(index); dateTimeConversion(argument, flags, width, precision, origConversion, subConversion); break; case '%': percentFormat(flags, width, precision); break; case 'n': newLineFormat(flags, width, precision); break; default: throw new UnknownFormatConversionException(String.valueOf(origConversion)); } } } catch (IOException exc) { ioException = exc; } return this;
  public Formatter format(String format, Object... args)  {    return format(locale, format, args);  }