_indecized = false;
	public boolean remove(GraphElement ge) {		if(_e.contains(ge) || _v.contains(ge)) {			_indecized = false;			ge.setParent(null);		} else {			return false;		}		if(ge.getClass() == DVertex.class) {			_e.removeAll(((DVertex) ge).inEdges());			_e.removeAll(((DVertex) ge).outEdges());			_v.remove(ge);			cleanupVertex(((DVertex) ge).neighbors());			// invalidate _minEdgeLengthCache			_minEdgeLengthCache = 0;			_shortestPathsCache = false;			/* This return value is meaningless for now */			return true;		}		if(ge.getClass() == DEdge.class) {			_e.remove(ge);			cleanupVertex((DVertex) ((DEdge) ge).getSource());			cleanupVertex((DVertex) ((DEdge) ge).getDest());			// invalidate _minEdgeLengthCache			_minEdgeLengthCache = 0;			_shortestPathsCache = false;			/* This return value is meaningless for now */			return true;		}		/* TODO: need to add cases for other types here */		throw new IllegalArgumentException("You must add a Directed graph element to a Directed Graph.");	}