code: public Object unmarshal(HierarchicalStreamReader reader,
  			UnmarshallingContext context) {
  		String key = reader.getAttribute("key");
  		String type = reader.getAttribute("type");
  		String value = reader.getAttribute("value");
  		XExtension extension = null;
  		String extensionString = reader.getAttribute("extension");
  		if (extensionString != null && extensionString.length() > 0) {
  			URI uri = URI.create(extensionString);
  			extension = XExtensionManager.instance().getByUri(uri);
  		}
  		XFactory factory = XFactoryRegistry.instance().currentDefault();
  		XAttribute attribute = XAttributeUtils.composeAttribute(factory, key,
  				value, type, extension);
  		XAttribute parent = (XAttribute) context.get(PARENT);
  		if (parent != null && parent instanceof XAttributeCollection) {
  			((XAttributeCollection) parent).addToCollection(attribute);
  		}
  		System.err.println("8");
  		if (reader.hasMoreChildren()) {
  			System.err.println("9");
  			reader.moveDown();
  			Object oldParent = context.get(PARENT);
  			context.put(PARENT, attribute);
  			XAttributeMap metaAttributes = (XAttributeMap) context
  					.convertAnother(attribute, XAttributeMap.class,
  							XesXStreamPersistency.attributeMapConverter);
  			context.put(PARENT, oldParent);
  			reader.moveUp();
  			attribute.setAttributes(metaAttributes);
  		}
  		System.err.println("done");
  		return attribute;
  	}
docs: /*
  (non-Javadoc)
  
  @see
  com.thoughtworks.xstream.converters.Converter#unmarshal(com.thoughtworks
  .xstream.io.HierarchicalStreamReader,
  com.thoughtworks.xstream.converters.UnmarshallingContext)