code: private static int finalizeConverter(
      char c, String pattern, int i,
      final StringBuffer currentLiteral, final ExtrasFormattingInfo formattingInfo,
      final Map converterRegistry, final Map rules, final List patternConverters,
      final List formattingInfos) {
      StringBuffer convBuf = new StringBuffer();
      i = extractConverter(c, pattern, i, convBuf, currentLiteral);
  
      String converterId = convBuf.toString();
  
      List options = new ArrayList();
      i = extractOptions(pattern, i, options);
  
      PatternConverter pc =
        createConverter(
          converterId, currentLiteral, converterRegistry, rules, options);
  
      if (pc == null) {
        StringBuffer msg;
  
        if (converterId.length() == 0) {
          msg =
            new StringBuffer("Empty conversion specifier starting at position ");
        } else {
          msg = new StringBuffer("Unrecognized conversion specifier [");
          msg.append(converterId);
          msg.append("] starting at position ");
        }
  
        msg.append(Integer.toString(i));
        msg.append(" in conversion pattern.");
  
          LogLog.error(msg.toString());
  
        patternConverters.add(
          new LiteralPatternConverter(currentLiteral.toString()));
        formattingInfos.add(ExtrasFormattingInfo.getDefault());
      } else {
        patternConverters.add(pc);
        formattingInfos.add(formattingInfo);
  
        if (currentLiteral.length() > 0) {
          patternConverters.add(
            new LiteralPatternConverter(currentLiteral.toString()));
          formattingInfos.add(ExtrasFormattingInfo.getDefault());
        }
      }
  
      currentLiteral.setLength(0);
  
      return i;
    }
docs: Processes a format specifier sequence.
  
  @param c initial character of format specifier.
  @param pattern conversion pattern
  @param i current position in conversion pattern.
  @param currentLiteral current literal.
  @param formattingInfo current field specifier.
  @param converterRegistry map of user-provided pattern converters keyed by format specifier, may be null.
  @param rules map of stock pattern converters keyed by format specifier.
  @param patternConverters list to receive parsed pattern converter.
  @param formattingInfos list to receive corresponding field specifier.
  @return position after format specifier sequence.