in jsign-core/src/main/java/net/jsign/msi/MSIFile.java [166:179]
private void append(DirectoryProperty node, List<Property> entries) {
Map<MSIStreamName, Property> sortedEntries = new TreeMap<>();
for (Property entry : node) {
sortedEntries.put(new MSIStreamName(entry.getName()), entry);
}
for (Property property : sortedEntries.values()) {
if (!property.isDirectory()) {
entries.add(property);
} else {
append((DirectoryProperty) property, entries);
}
}
}