private void addEdgeToARG(Node child, List<ARGNode> argNodes, List<Edge> edges, int rangeMin, int rangeMax) throws FileParseException {
		if (child.getNodeName().equalsIgnoreCase(XML_EDGE)) {
			String sourceID = getAttributeForNode(child, XML_SOURCE);
			String targetID = getAttributeForNode(child, XML_TARGET);
			String edgeID = getAttributeForNode(child, XML_ID);
			ARGNode source = getNodeForID(argNodes, sourceID);
			ARGNode target = getNodeForID(argNodes, targetID);
			
			if (source == null) {
				throw new FileParseException("Could not find node with id " + sourceID + ", referred to by edge");
			}
			if (target == null) {
				throw new FileParseException("Could not find node with id " + targetID + ", referred to by edge");
			}
			
			if (source.getNodeHeight() > target.getNodeHeight()) {
				throw new FileParseException("For edge " + XML_ID + " source node height cannot be greater than target node height");
			}
			
			Node rangeNode = getChildForNodeName(child, XML_RANGE);
			if (rangeNode != null) {
				String startStr = getNodeTextContent(rangeNode, XML_START);
				String endStr = getNodeTextContent(rangeNode, XML_END);
				if (startStr==null || endStr==null) {
					throw new FileParseException("Could not read range start / end information for edge " + XML_ID);
				}
				try {
					Integer start = Integer.parseInt(startStr.trim());
					Integer end = Integer.parseInt(endStr.trim());
					
					edges.add(new Edge(edgeID, source, target, start, end));	
				}
				catch (NumberFormatException nfe) {
					throw new FileParseException("Could not read integer value for start/end information for edge " + XML_ID);
				}
			
				
			}
			else {
				edges.add(new Edge(edgeID, source, target, rangeMin, rangeMax));	
			}
			
			//System.out.println("Adding edge with id " + edgeID + " connecting  source " + sourceID + " to " + targetID);
		}
	}