docs: public List<ParsingResult> parseUsing( final String ddl,
                                             final String firstParserId,
                                             final String secondParserId,
                                             final String... additionalParserIds ) throws ParsingException {
          CheckArg.isNotEmpty(firstParserId, "firstParserId");
          CheckArg.isNotEmpty(secondParserId, "secondParserId");
  
          if (additionalParserIds != null) {
              CheckArg.containsNoNulls(additionalParserIds, "additionalParserIds");
          }
  
          final int numParsers = ((additionalParserIds == null) ? 2 : (additionalParserIds.length + 2));
          final List<DdlParser> selectedParsers = new ArrayList<DdlParser>(numParsers);
  
          { // add first parser
              final DdlParser parser = getParser(firstParserId);
  
              if (parser == null) {
                  throw new ParsingException(Position.EMPTY_CONTENT_POSITION, DdlSequencerI18n.unknownParser.text(firstParserId));
              }
  
              selectedParsers.add(parser);
          }
  
          { // add second parser
              final DdlParser parser = getParser(secondParserId);
  
              if (parser == null) {
                  throw new ParsingException(Position.EMPTY_CONTENT_POSITION, DdlSequencerI18n.unknownParser.text(secondParserId));
              }
  
              selectedParsers.add(parser);
          }
  
          // add remaining parsers
          if ((additionalParserIds != null) && (additionalParserIds.length != 0)) {
              for (final String id : additionalParserIds) {
                  final DdlParser parser = getParser(id);
  
                  if (parser == null) {
                      throw new ParsingException(Position.EMPTY_CONTENT_POSITION, DdlSequencerI18n.unknownParser.text(id));
                  }
  
                  selectedParsers.add(parser);
              }
          }
  
          return parseUsing(ddl, selectedParsers);
      }