class ConfigurationConverter implements Converter {

    @Override
    public Object unmarshal(HierarchicalStreamReader reader, UnmarshallingContext context)
    {
        DefaultConfiguration configuration = new DefaultConfiguration();
        Map<String, Object> requiredArguments = new HashMap<String, Object>();
        while(reader.hasMoreChildren()) {
            reader.moveDown();
            if(metadata.xmlRequiredArgumentElement.equals(reader.getNodeName()))
            {
                requiredArguments.put(reader.getAttribute(metadata.xmlRequiredArgumentAttributeName), reader.getAttribute(metadata.xmlRequiredArgumentAttributeValue));
            }
            reader.moveUp();
        }
        configuration.setRequiredArguments(requiredArguments);
        log.trace("Created {}", configuration);
        return configuration;
    }

    public  ConfigurationConverter(Metadata metadata);

}