new ResourceValueAnalysis<Resource>(methodGen, resourceTracker, resource);
new ResourceValueAnalysis<Resource>(methodGen, resourceTracker, resource, bugReporter);
	public void visitClassContext(ClassContext classContext) {		try {			final JavaClass jclass = classContext.getJavaClass();			Method[] methodList = jclass.getMethods();			for (int i = 0; i < methodList.length; ++i) {				Method method = methodList[i];				if (method.isAbstract() || method.isNative())					continue;				if (!prescreen(classContext, method))					continue;				final ResourceTracker<Resource> resourceTracker = getResourceTracker(classContext, method);				final MethodGen methodGen = classContext.getMethodGen(method);				if (methodGen == null)					continue;				final CFG cfg = classContext.getCFG(method);				new LocationScanner(cfg).scan(new LocationScanner.Callback() {					public void visitLocation(Location location) {						BasicBlock basicBlock = location.getBasicBlock();						InstructionHandle handle = location.getHandle();						Resource resource = resourceTracker.isResourceCreation(basicBlock, handle, methodGen.getConstantPool());						if (resource != null) {							ResourceValueAnalysis<Resource> analysis =								new ResourceValueAnalysis<Resource>(methodGen, resourceTracker, resource);							Dataflow<ResourceValueFrame> dataflow = new Dataflow<ResourceValueFrame>(cfg, analysis);							try {								dataflow.execute();								inspectResult(jclass, methodGen, cfg, dataflow, resource);							} catch (DataflowAnalysisException e) {								throw new AnalysisException("FindOpenResource caught exception: " + e.toString(), e);							}						}					}				});			}		} catch (CFGBuilderException e) {			throw new AnalysisException(e.toString(), e);		} catch (DataflowAnalysisException e) {			throw new AnalysisException(e.toString(), e);		}	}