code: private Object newMap(Object obj, Element node) throws Exception {
  		String id = getAttribute(node, "id");
  
  		Map<Object, Object> map = new HashMap<>();
  		if (id != null) {
  			_idMap.put(id, map);
  		}
  
  		Element[] children = getChildren(node);
  		for (int i = 0; i < children.length; i++) {
  
  			Element element = children[i];
  
  			if (!element.getTagName().equals("Entry")) {
  				throw new IllegalStateException("Not an Entry");
  			}
  
  			Element key = null;
  			Element value = null;
  
  			Element[] entries = getChildren(element);
  			for (int j = 0; j < entries.length; j++) {
  				Element item = entries[j];
  				if (!item.getTagName().equals("Item")) {
  					throw new IllegalStateException("Not an Item");
  				}
  				if (key == null) {
  					key = item;
  				} else {
  					value = item;
  				}
  			}
  
  			if (key == null || value == null) {
  				throw new IllegalStateException("Missing Item in Entry");
  			}
  			String kid = getAttribute(key, "id");
  			String vid = getAttribute(value, "id");
  
  			Object k = value(obj, key);
  			Object v = value(obj, value);
  			map.put(k, v);
  
  			if (kid != null) {
  				_idMap.put(kid, k);
  			}
  			if (vid != null) {
  				_idMap.put(vid, v);
  			}
  		}
  
  		return map;
  	}
docs: /*
  Create a new map object.