Other object types have a subobject of the type Phones, which they use for indexing the names of the monophone which they are working with. Since we have not yet made sure that at every time two cooperating modules use the same Phones object for indexing, please don't use multiple Phones objects for indexing, unless you really know what you are doing.
When creating a PhonesSet object you don't have to provide an indexing Phones object. The PhonesSet object will happily live without one. The idea is that modules which want to use a PhonesSet object will also need an indexing Phones object anyway. So, whether it makes sense or not, every module can decide itself how to do the indexing of the monophone names that occur in a PhonesSet Object. Once a PhonesSet object is defined, you can fill it by reading a file. Both, the PhonesSet object and the Phones object use generic lists to store their elements.