Exporting assemblies to gdml file

The question is about exporting of assemblies to gdml file using G4GDMLParser::Write(…)
It seems that if a given volume contains imprints of several (e.g two) different G4AssemblyVolume, then only one (the first) of them is exported to gdml <structure> section of that volume.
It looks like the choice of assemblies for gdml is made in recursively called G4GDMLWriteStructure::TraverseVolumeTree(…)
First it selects assembly based on its ID (e.g. 1) and the content of class variable addedAssemblies:
L691 if(std::find(addedAssemblies.cbegin(), addedAssemblies.cend(), assemblyID) == addedAssemblies.cend())
in order to add it to <structure> section as assembly (e.g. <assembly name=“Assembly_1”>…)

and then based on the imprint ID (e.g. 1), which is implemented as independent on assemblyID:
L704 if(std::find(addedImprints.cbegin(), addedImprints.cend(), imprintID) == addedImprints.cend())
the imprint of the assembly is added to the volume description.

If there are e.g. two assemblies Assembly_1 and Assembly_2 which are imprinted in the same volume V1, then for the assembly Assembly_2 and its imprint 1 the second condition (L704) is false as imprint 1 was added for Assembly_1 and the imprint 1 of Assembly_2 is skipped.
At least this is how it seems to work for my geometry.

I tried a simple change:
std::vector<int> addedImprints substituted by
std::map<int, std::vector<int> > addedImprints
and then in L704 and L760 accordingly:
if(std::find(addedImprints[assemblyID].begin(), addedImprints[assemblyID].end(), imprintID) == addedImprints[assemblyID].end()) …
addedImprints[assemblyID].push_back(imprintID);

That seemed to solve the problem.

Please could someone comment on these both problem and solution.
Many thanks in advance.

You may refer to this ticket which was recently addressed and closed:

Thank you very much for the prompt reply and for the link!
I wish I’d found it before posting the question…