add OrderedXmlObject whose constructor adds nodes in a specific order

This is very useful for having the mapper (your XmlObject subclass) control the order of its nodes, rather than push that out to the calling code. This comes up a lot in testing for example, where the XML-equal comparison enforces order, even if in your particular case the order isn't semantically meaningful.