-static void
-static_each (SCM list, Method_pointer method)
-{
- for (SCM p = list; gh_pair_p (p); p = ly_cdr (p))
- (unsmob_translator (ly_car (p))->*method) ();
-
+ if (tr->must_be_last ())
+ {
+ SCM cons = scm_cons (str, SCM_EOL);
+ if (scm_is_pair (trans_list))
+ scm_set_cdr_x (scm_last_pair (trans_list), cons);
+ else
+ trans_list = cons;
+ }
+ else
+ trans_list = scm_cons (str, trans_list);
+
+ tr->daddy_context_ = new_context;
+ tr->unprotect ();
+ }
+ }
+
+ /* Filter unwanted translator types. Required to make
+ \with {\consists "..."} work. */
+ if (dynamic_cast<Engraver_group *> (g))
+ g->simple_trans_list_ = filter_performers (trans_list);
+ else if (dynamic_cast<Performer_group *> (g))
+ g->simple_trans_list_ = filter_engravers (trans_list);
+
+ // TODO: scrap Context::implementation
+ new_context->implementation_ = g;
+
+ g->connect_to_context (new_context);
+ g->unprotect ();
+
+ recurse_over_translators (new_context,
+ &Translator::initialize,
+ &Translator_group::initialize,
+ DOWN);