PropertyComparator(Class<?> implementation) {
order = new HashMap<Object,Integer>();
while (implementation != null) {
final XmlType xml = implementation.getAnnotation(XmlType.class);
if (xml != null) {
final String[] propOrder = xml.propOrder();
for (int i=propOrder.length; --i>=0;) {
/*
* Add the entries in reverse order because we are iterating from the child class to
* the parent class, and we want the properties in the parent class to be sorted first.
* If duplicated properties are found, keep the first occurence (i.e. sort the property