genSeparatedListTypeInitialization(
genSeparatedListInitialization(
    private void genFactoryInitialization(ADT api) {        Iterator types = api.typeIterator();        int listTypeCount = 0;        while (types.hasNext()) {            Type type = (Type) types.next();            if (type instanceof NormalListType) {                genNormalListTypeInitialization(type, listTypeCount);                listTypeCount++;            } else if (type instanceof SeparatedListType) {                genSeparatedListTypeInitialization(                    listTypeCount,                    (SeparatedListType) type);                listTypeCount++;            } else {                JavaGenerationParameters params = getJavaGenerationParameters();                Iterator alts = type.alternativeIterator();                while (alts.hasNext()) {                    Alternative alt = (Alternative) alts.next();                    String protoVar = prototypeVariable(type, alt);                    String funVar = funVariable(type, alt);                    String afunName = type.getId() + "_" + alt.getId();                    println(                        "    "                            + patternVariable(type, alt)                            + " = factory.parse(\""                            + StringConversions.escapeQuotes(                                alt.buildMatchPattern().toString())                            + "\");");                    println(                        "    "                            + funVar                            + " = factory.makeAFun(\""                            + "_"                            + afunName                            + "\", "                            + type.getAltArity(alt)                            + ", false);");                    println(                        "    "                            + protoVar                            + " = new "                            + AlternativeGenerator.qualifiedClassName(params, type, alt)                            + "(this);");                    println();                }            }        }        Iterator bottoms = api.bottomTypeIterator();        while (bottoms.hasNext()) {            String type = (String) bottoms.next();            if (!getConverter().isReserved(type)) {                println(                    "    "                        + StringConversions.makeCapitalizedIdentifier(type)                        + ".initialize(this);");            }        }    }