code: public Object unmarshal(HierarchicalStreamReader reader,
  			UnmarshallingContext context) {
  		XAttributeMap map = null;
  		// restore correct type of attribute map, i.e., check for buffered
  		// implementation, and correctly restore lazy implementation if
  		// this had been used for serialization.
  		boolean lazy = reader.getAttribute("lazy").equals("true");
  		boolean buffered = reader.getAttribute("buffered").equals("true");
  		if (lazy) {
  			if (buffered) {
  				map = new XAttributeMapLazyImpl<XAttributeMapBufferedImpl>(
  						XAttributeMapBufferedImpl.class);
  			} else {
  				map = new XAttributeMapLazyImpl<XAttributeMapImpl>(
  						XAttributeMapImpl.class);
  			}
  		} else if (buffered) {
  			map = new XAttributeMapBufferedImpl();
  		} else {
  			map = new XAttributeMapImpl();
  		}
  		while (reader.hasMoreChildren()) {
  			reader.moveDown();
  			XAttribute attribute = (XAttribute) context.convertAnother(map,
  					XAttribute.class, XesXStreamPersistency.attributeConverter);
  			map.put(attribute.getKey(), attribute);
  			reader.moveUp();
  		}
  		return map;
  	}
docs: /*
  (non-Javadoc)
  
  @see
  com.thoughtworks.xstream.converters.Converter#unmarshal(com.thoughtworks
  .xstream.io.HierarchicalStreamReader,
  com.thoughtworks.xstream.converters.UnmarshallingContext)