public Dataflow(CFG cfg, DataflowAnalysis<Fact> analysis) {
public Dataflow(CFG cfg, AnalysisType analysis) {
	public Dataflow(CFG cfg, DataflowAnalysis<Fact> analysis) {		this.cfg = cfg;		this.analysis = analysis;		blockOrder = analysis.getBlockOrder(cfg);		startFactMap = new IdentityHashMap<BasicBlock, Fact>();		resultFactMap = new IdentityHashMap<BasicBlock, Fact>();		isForwards = analysis.isForwards();		numIterations = 0;		// Create and initialize dataflow facts		Iterator<BasicBlock> i = cfg.blockIterator();		while (i.hasNext()) {			BasicBlock block = i.next();			// Start fact is just empty.			startFactMap.put(block, analysis.createFact());			// Initial result facts are whatever the analysis sets them to be.			Fact result = analysis.createFact();			analysis.initResultFact(result);			resultFactMap.put(block, result);		}	}