public void genTransformerL() {

        TreeBuildingHandler treeBuildingHandler = new TreeBuildingHandler();
        TrL.handler = treeBuildingHandler;
        treeBuildingHandler.longText = true; // save text for all named nodes
        ExtendedExpressionBuilder<RuleBuilder, Object> r;
        if (state.getTypeParameters().length != 0) {
            Utils.warning(this, "Generic state.");
        }
        TrL.startSymbol = ss;
        // add rules in E and T, we require that the rule maps are compatible
        TrL.ruleMap.putAll(T.ruleMap);
        TrL.ruleMap.putAll(E.ruleMap);
        // define a rule
        // ss -> e eClause
        // for each nonterminal e in G
        for (Production eProd : G.ruleMap.values()) {
            final String name = eProd.getProdName();
            String eTrans = name + Trans;
            TrL.def(ss).start().t(name).nt(eTrans).end();
            ArrayList<Production> list = new ArrayList<Production>();
            final ArrayList<Production> symlist = new ArrayList<Production>();
            LanguageGenerator.breakOrList(eProd, list);
            for (final Production clause : list) {
                symlist.clear();
                LanguageGenerator.breakSeqList(clause, symlist);
                final String a = ((Terminal) symlist.get(0)).text;
                // for each clause e -> a z1 ... zn in G
                // eTrans -> a by (transformer)
                String eaTrans = name + a + Trans;
                TrL.def(eTrans).start().t(a).nt(eaTrans).end();
                TrL.def(eaTrans).start(1).t(BY + name + a).nt("dt").end();
                final AbstractProduction node = (AbstractProduction) ((erilex.Seq) TrL.ruleMap.get(eaTrans)).b;
                node.typeType = consnat(java.lang.Class.class, conswild("?", consnat(GenericTreeTransformer.class, consnatfuture(langPack + "."+ d.get(a)), consnat(state))));
            }
            TrLS.trans(name, TT.class);
        }

    }