--- jaxb-ri-4.0.5-RI/jaxb-ri/runtime/impl/src/main/java/org/glassfish/jaxb/runtime/v2/schemagen/XmlSchemaGenerator.java 2025-07-17 11:04:19.437124964 +0200 +++ jaxb-ri-4.0.5-RI/jaxb-ri/runtime/impl/src/main/java/org/glassfish/jaxb/runtime/v2/schemagen/XmlSchemaGenerator.java 2025-07-17 15:56:48.470097818 +0200 @@ -49,6 +49,7 @@ import java.util.*; import java.util.logging.Level; import java.util.logging.Logger; +import java.util.TreeSet; import static org.glassfish.jaxb.runtime.v2.schemagen.Util.*; @@ -322,7 +323,7 @@ // TODO: don't we want to bake in versions? // generate listing per schema - for (Map.Entry e : namespaces.entrySet()) { + for (Map.Entry e : new TreeSet<>(namespaces.entrySet())) { Bindings group = root.bindings(); String prefix; @@ -408,7 +409,7 @@ } // then write'em all - for( Map.Entry e : out.entrySet() ) { + for( Map.Entry e : new TreeSet<>(out.entrySet()) ) { Result result = e.getValue(); e.getKey().writeTo( result, systemIds ); if(result instanceof StreamResult) { @@ -550,7 +551,7 @@ // additional namespace declarations to be made. Map xmlNs = types.getXmlNs(uri); - for (Map.Entry e : xmlNs.entrySet()) { + for (Map.Entry e : new TreeSet<>(xmlNs.entrySet())) { schema._namespace(e.getValue(),e.getKey()); } @@ -612,7 +613,7 @@ } // then write each component - for (Map.Entry e : elementDecls.entrySet()) { + for (Map.Entry e : new TreeSet<>(elementDecls.entrySet())) { e.getValue().writeTo(e.getKey(),schema); schema._pcdata(newline); } @@ -638,7 +639,7 @@ writeArray(a,schema); schema._pcdata(newline); } - for (Map.Entry> e : attributeDecls.entrySet()) { + for (Map.Entry> e : new TreeSet<>(attributeDecls.entrySet())) { TopLevelAttribute a = schema.attribute(); a.name(e.getKey()); if(e.getValue()==null)