firstEdgeId = cfg.getFirstEdgeId();
	public DepthFirstSearch(CFG cfg) {		if (!cfg.edgeIdsAssigned()) throw new IllegalArgumentException("CFG has not had edge ids assigned");		this.cfg = cfg;		firstEdgeId = cfg.getFirstEdgeId();		int numBlocks = cfg.getNumBasicBlocks();		colorList = new int[numBlocks]; // initially all elements are WHITE		discoveryTimeList = new int[numBlocks];		finishTimeList = new int[numBlocks];		int maxEdgeId = cfg.getMaxEdgeId();		dfsEdgeTypeList = new int[maxEdgeId];		timestamp = 0;		topologicalSortList = new LinkedList<BasicBlock>();	}