DataflowCFGPrinter<StateSet, ObligationAnalysis> cfgPrinter = new DataflowCFGPrinter<StateSet, ObligationAnalysis>(cfg, dataflow, analysis); cfgPrinter.print(System.out);
DataflowCFGPrinter.printCFG(dataflow, System.out);
	private void analyzeMethod(ClassContext classContext, Method method) {		MethodGen methodGen = classContext.getMethodGen(method);		if (methodGen == null) return;		if (DEBUG) {			System.out.println("*** Analyzing method " +					SignatureConverter.convertMethodSignature(methodGen));		}		try {			CFG cfg = classContext.getCFG(method);			DepthFirstSearch dfs = classContext.getDepthFirstSearch(method);			TypeDataflow typeDataflow = classContext.getTypeDataflow(method);			assert typeDataflow != null;						ObligationAnalysis analysis =				new ObligationAnalysis(dfs, typeDataflow, methodGen, factory, database, bugReporter);			Dataflow<StateSet, ObligationAnalysis> dataflow =				new Dataflow<StateSet, ObligationAnalysis>(cfg, analysis);						dataflow.execute();						if (DEBUG_PRINTCFG) {				System.out.println("Dataflow CFG:");				DataflowCFGPrinter<StateSet, ObligationAnalysis> cfgPrinter =					new DataflowCFGPrinter<StateSet, ObligationAnalysis>(cfg, dataflow, analysis);				cfgPrinter.print(System.out);			}						// See if there are any states with nonempty obligation sets			StateSet factAtExit = dataflow.getStartFact(cfg.getExit());			Set<Obligation> leakedObligationSet = new HashSet<Obligation>();			for (Iterator<State> i = factAtExit.stateIterator(); i.hasNext();) {				State state = i.next();				for (int id = 0; id < factory.getMaxObligationTypes(); ++id) {					if (state.getObligationSet().getCount(id) > 0) {						leakedObligationSet.add(factory.getObligationById(id));					}				}			}			for (Obligation obligation : leakedObligationSet) {				bugReporter.reportBug(new BugInstance(this, "OS_OPEN_STREAM", NORMAL_PRIORITY)						.addClassAndMethod(methodGen, classContext.getJavaClass().getSourceFileName())						.addClass(obligation.getClassName()).describe("CLASS_REFTYPE")				);			}		} catch (CFGBuilderException e) {			bugReporter.logError(					"Error building CFG for " +					SignatureConverter.convertMethodSignature(methodGen), e);		} catch (DataflowAnalysisException e) {			bugReporter.logError(					"ObligationAnalysis error while analyzing " +					SignatureConverter.convertMethodSignature(methodGen), e);		}	}