The TypeDefinition abstract class contains this method:
Map<String, PropertyDefinition<?>> getPropertyDefinitions();
The createType specification states that its output TypeDefinition must match the order of the properties in the input TypeDefinition.
Note that the output may contain new or renamed PropertyDefinition keys.
To satisfy the order requirement, the spec should stipulate that the Map<String, PropertyDefinition<?>> preserve order. i.e. the iterator on this map must return items in the same order they were added to the map.
For example, this can be accomplished by using a container that has both a List (to allow control of the ordering) and a Map that refers to it (for quick access to specific items).