protected final void findOppositeEdge() {
		Iterator<Edge> edgeIter = endNode.outgoingConnections.iterator();
		while(edgeIter.hasNext()){
			Edge e = edgeIter.next();
			if((e.startNode.ID == endNode.ID)&&(e.endNode.ID == startNode.ID)){
				this.oppositeEdge = e;
				e.oppositeEdge = this;
				return;
			}
		}
		this.oppositeEdge = null; // no other edge found 
	}