String decl = typeName + " " + prefix + "make" + typeId + arity + "(";
decl += buildFormalSeparatorArgs(type);
    private void genSeparatedListMake(        SeparatedListType type,        int arity,        String typeId,        String typeName,        String elementTypeName) {        int listLength = arity + (arity - 1) * type.getSeparators().getLength();        String decl = typeName + " " + prefix + "make" + typeId + arity + "(";        decl += buildFormalSeparatorArgs(type);        for (int i = 1; i < arity; i++) {            decl = decl + elementTypeName + " elem" + i + ", ";        }        decl = decl + elementTypeName + " elem" + arity + ")";        hprintln(decl + ";");        println(decl + " {");        String manyFunction = prefix + "make" + typeId + "Many";        if (arity == 2) {            String singleFunction = prefix + "make" + typeId + "Single";            println(                "  return "                    + manyFunction                    + "(elem1, "                    + buildActualSeparatorArgs(type)                    + singleFunction                    + "(elem2));");        } else {            String prevFunction = prefix + "make" + typeId + (arity - 1);            print(                "  return "                    + manyFunction                    + "(elem1, "                    + buildActualSeparatorArgsForMakeMany(type)                    + prevFunction                    + "("                    + buildActualSeparatorArgsForMakeMany(type));            for (int i = 2; i < arity; i++) {                print("elem" + i + ", ");            }            println("elem" + arity + "));");        }        println("}");    }