- if (m->is_type_b (Request_chord::static_name()))
- p = new Request_chord_iterator ((Request_chord*) m);
- else if (m->is_type_b (Chord::static_name()))
- p = new Chord_iterator ((Chord*) m);
- else if (m->is_type_b (Voice::static_name()))
- p = new Voice_iterator ((Voice*) m);
- else if (m->is_type_b (Translation_property::static_name ()))
- p = new Property_iterator((Translation_property *) m);
- else if (m->is_type_b (Change_translator::static_name ()))
- p = new Change_iterator((Change_translator*) m);
-
- if (m -> translator_type_str_.length_i ())
+ if (dynamic_cast<Request_chord const *> (m))
+ p = new Request_chord_iterator;
+ else if (dynamic_cast<Simultaneous_music const *> (m))
+ p = new Simultaneous_music_iterator;
+ else if (dynamic_cast<Sequential_music const *> (m))
+ p = new Sequential_music_iterator;
+ else if (dynamic_cast<Translation_property const *> (m))
+ p = new Property_iterator;
+ else if (dynamic_cast<Change_translator const *> (m))
+ p = new Change_iterator;
+ else if (dynamic_cast<Compressed_music const *> (m))
+ p = new Compressed_music_iterator;
+ else if (dynamic_cast<Music_wrapper const *> (m))
+ p = new Music_wrapper_iterator;
+
+ p->music_l_ = m;
+ if (m->translator_type_str_.length_i ())