docs: private Properties parseXML(Document doc, String sectionName) {
  		int found = -1;
  		Properties results = new Properties();
  		NodeList config = null;
  		if (sectionName == null){
  			config = doc.getElementsByTagName("default-config");
  			found = 0;
  		} else {
  			config = doc.getElementsByTagName("named-config");
  			if(config != null && config.getLength() > 0) {
  				for (int i = 0; i < config.getLength(); i++) {
  					Node node = config.item(i);
  					if(node.getNodeType() == Node.ELEMENT_NODE ){
  						NamedNodeMap attributes = node.getAttributes();
  						if (attributes != null && attributes.getLength() > 0){
  							Node name = attributes.getNamedItem("name");
  							if (name.getNodeValue().equalsIgnoreCase(sectionName)){
  								found = i;
  								break;
  							}
  						}
  					}
  				}
  			}
  
  			if (found == -1){
  				config = null;
  				logger.warn("Did not find "+sectionName+" section in config file. Reverting to defaults.");
  			}
  		}
  
  		if(config != null && config.getLength() > 0) {
  			Node node = config.item(found);
  			if(node.getNodeType() == Node.ELEMENT_NODE){
  				Element elementEntry = (Element)node;
  				NodeList childNodeList = elementEntry.getChildNodes();
  				for (int j = 0; j < childNodeList.getLength(); j++) {
  					Node node_j = childNodeList.item(j);
  					if (node_j.getNodeType() == Node.ELEMENT_NODE) {
  						Element piece = (Element) node_j;
  						NamedNodeMap attributes = piece.getAttributes();
  						if (attributes != null && attributes.getLength() > 0){
  							results.put(attributes.item(0).getNodeValue(), piece.getTextContent());
  						}
  					}
  				}
  			}
  		}
  
  		return results;
  	}