- Translator_group * existing = find_existing_translator (n,id);
- if (existing)
- return existing;
-
- Link_array<Context_def> path
- = unsmob_context_def (definition_)->path_to_acceptable_translator (n, get_output_def ());
-
- if (path.size ())
- {
- Translator_group * current = this;
-
- // start at 1. The first one (index 0) will be us.
- for (int i=0; i < path.size (); i++)
- {
- SCM ops = (i == path.size () -1) ? operations : SCM_EOL;
-
- Translator_group * new_group
- = path[i]->instantiate (output_def_, ops);
-
- if (i == path.size () -1)
- {
- new_group->id_string_ = id;
- }
-
- current->add_fresh_group_translator (new_group);
- apply_property_operations (new_group, ops);
-
- current = new_group;
- }
-
- return current;
- }
-
- Translator_group *ret = 0;
- if (daddy_trans_)
- ret = daddy_trans_->find_create_translator (n, id, operations);
- else