code: private void convertNode(final GraphObjectMap map, final Node node) {
  
  		final NodeList nodeList = node.getChildNodes();
  		if (nodeList != null) {
  
  			final List<GraphObjectMap> children = new LinkedList<>();
  			final int length                    = nodeList.getLength();
  
  			for (int i=0; i<length; i++) {
  
  				final GraphObjectMap childMap = new GraphObjectMap();
  				final Node childNode          = nodeList.item(i);
  
  				convertNode(childMap, childNode);
  				children.add(childMap);
  			}
  
  			map.put(childrenProperty, children);
  		}
  
  		final NamedNodeMap attributeList = node.getAttributes();
  		if (attributeList != null) {
  
  			final List<GraphObjectMap> attributes = new LinkedList<>();
  			final int length                      = attributeList.getLength();
  
  			for (int i=0; i<length; i++) {
  
  				final GraphObjectMap attributeMap = new GraphObjectMap();
  				final Node attributeNode          = attributeList.item(i);
  
  				convertNode(attributeMap, attributeNode);
  				attributes.add(attributeMap);
  			}
  
  			map.put(attributesProperty, attributes);
  		}
  
  		map.put(typeProperty, node.getClass().getSimpleName());
  
  		final String nodeName = node.getNodeName();
  		if (nodeName != null) {
  
  			map.put(nameProperty, nodeName);
  		}
  
  		final String nodeValue = node.getNodeValue();
  		if (nodeValue != null) {
  
  			map.put(valueProperty, nodeValue);
  		}
  	}
docs: ----- private methods -----