@Override
 protected void marshalEntry(
     HierarchicalStreamWriter writer, MarshallingContext context, Entry entry) {
   if (entry.getKey() instanceof String) {
     marshalStringKey(writer, context, entry);
   } else {
     super.marshalEntry(writer, context, entry);
   }
 }
 @Override
 protected void unmarshalEntry(
     HierarchicalStreamReader reader, UnmarshallingContext context, Map map) {
   String key = reader.getNodeName();
   if (key.equals(getEntryNodeName())) key = reader.getAttribute("key");
   if (key == null) {
     super.unmarshalEntry(reader, context, map);
   } else {
     unmarshalStringKey(reader, context, map, key);
   }
 }