code: @SuppressWarnings("unchecked")
  	protected Element createElement(Document document, Simon simon) {
  		// Simon type is used as element name
  		Sample sample = simon.sample();
  		SimonType lType = SimonTypeFactory.getValueFromInstance(sample);
  		Element element = document.createElement(lType.name().toLowerCase());
  		// Only to have the name as first attribute
  		element.setAttribute("name", sample.getName());
  		// Export properties using reflection
  		for (Getter getter : GetterFactory.getGetters(sample.getClass())) {
  			Object propertyValue = getter.get(sample);
  			if (propertyValue != null) {
  				Stringifier propertyStringifier = stringifierFactory
  					.getStringifier(getter.getType(), getter.getSubType());
  				if (propertyStringifier != null) {
  					element.setAttribute(getter.getName(), propertyStringifier.toString(propertyValue));
  				}
  			}
  		}
  		// Export attribute map
  		Iterator<String> attributeNameIter = simon.getAttributeNames();
  		while (attributeNameIter.hasNext()) {
  			String attributeName = attributeNameIter.next();
  			Object attributeValue = simon.getAttribute(attributeName);
  			if (attributeValue != null) {
  				Stringifier attributeStringifier = stringifierFactory
  					.getStringifier(attributeValue.getClass());
  				if (attributeStringifier != null) {
  					Element attributeElt = document.createElement("attribute");
  					attributeElt.setAttribute("name", attributeName);
  					attributeElt.setAttribute("value", attributeStringifier.toString(attributeValue));
  					element.appendChild(attributeElt);
  				}
  			}
  
  		}
  		return element;
  
  	}
docs: Transforms a Simon into a JSON object.
  
  @param simon Simon
  @return JSON object