MethodGen methodGen = getMethodGen(method);  CFG cfg = getRawCFG(method);      String methodId = methodGen.getClassName()+"."+methodGen.getName()+":"+methodGen.getSignature(); if (DEBUG) System.out.println("ClassContext: request to prune " + methodId); if (!busyCFGSet.add(methodId)) return cfg;  if (PRUNE_INFEASIBLE_EXCEPTION_EDGES && !cfg.isFlagSet(PRUNED_INFEASIBLE_EXCEPTIONS)) { try { TypeDataflow typeDataflow = getTypeDataflow(method); new PruneInfeasibleExceptionEdges(cfg, getMethodGen(method), typeDataflow, getConstantPoolGen()).execute(); } catch (DataflowAnalysisException e) {  } catch (ClassNotFoundException e) { lookupFailureCallback.reportMissingClass(e); } } cfg.setFlags(cfg.getFlags() | PRUNED_INFEASIBLE_EXCEPTIONS);  if (PRUNE_UNCONDITIONAL_EXCEPTION_THROWER_EDGES && !cfg.isFlagSet(PRUNED_UNCONDITIONAL_THROWERS)) { try { new PruneUnconditionalExceptionThrowerEdges( methodGen, cfg, getConstantPoolGen(), lookupFailureCallback).execute(); } catch (DataflowAnalysisException e) {  } } cfg.setFlags(cfg.getFlags() | PRUNED_UNCONDITIONAL_THROWERS);  busyCFGSet.remove(methodId);  return cfg;
return cfgFactory.getRefinedCFG(method);
	public CFG getCFG(Method method) throws CFGBuilderException {		MethodGen methodGen = getMethodGen(method);		CFG cfg = getRawCFG(method);		// HACK:		// Due to recursive method invocations, we may get a recursive		// request for the pruned CFG of a method.  In this case,		// we just return the raw CFG.		String methodId = methodGen.getClassName()+"."+methodGen.getName()+":"+methodGen.getSignature();		if (DEBUG) System.out.println("ClassContext: request to prune " + methodId);		if (!busyCFGSet.add(methodId))			return cfg;		if (PRUNE_INFEASIBLE_EXCEPTION_EDGES && !cfg.isFlagSet(PRUNED_INFEASIBLE_EXCEPTIONS)) {			try {				TypeDataflow typeDataflow = getTypeDataflow(method);				new PruneInfeasibleExceptionEdges(cfg, getMethodGen(method), typeDataflow, getConstantPoolGen()).execute();			} catch (DataflowAnalysisException e) {				// FIXME: should report the error			} catch (ClassNotFoundException e) {				lookupFailureCallback.reportMissingClass(e);			}		}		cfg.setFlags(cfg.getFlags() | PRUNED_INFEASIBLE_EXCEPTIONS);		if (PRUNE_UNCONDITIONAL_EXCEPTION_THROWER_EDGES && !cfg.isFlagSet(PRUNED_UNCONDITIONAL_THROWERS)) {			try {				new PruneUnconditionalExceptionThrowerEdges(					methodGen, cfg, getConstantPoolGen(), lookupFailureCallback).execute();			} catch (DataflowAnalysisException e) {				// FIXME: should report the error			}		}		cfg.setFlags(cfg.getFlags() | PRUNED_UNCONDITIONAL_THROWERS);		busyCFGSet.remove(methodId);		return cfg;	}