public ResourceTracker<Lock> createResourceTracker(RepositoryLookupFailureCallback lookupFailureCallback, MethodGen methodGen, CFG cfg) throws CFGBuilderException, DataflowAnalysisException { ValueNumberAnalysis vna = new ValueNumberAnalysis(methodGen, new DepthFirstSearch(cfg).search()); ValueNumberDataflow vnaDataflow = new ValueNumberDataflow(cfg, vna); vnaDataflow.execute();
public ResourceTracker<Lock> createResourceTracker(ClassContext classContext, Method method) throws CFGBuilderException, DataflowAnalysisException {  ValueNumberDataflow vnaDataflow = classContext.getValueNumberDataflow(method); RepositoryLookupFailureCallback lookupFailureCallback = classContext.getLookupFailureCallback();
	public static void main(String[] argv) throws Exception {		if (argv.length != 3) {			System.err.println("Usage: " + FindUnreleasedLock.class.getName() + " <class file> <method name> <bytecode offset>");			System.exit(1);		}		String classFile = argv[0];		String methodName = argv[1];		int offset = Integer.parseInt(argv[2]);		ResourceValueAnalysisTestDriver<Lock> driver = new ResourceValueAnalysisTestDriver<Lock>() {			public ResourceTracker<Lock> createResourceTracker(RepositoryLookupFailureCallback lookupFailureCallback,				MethodGen methodGen, CFG cfg) throws CFGBuilderException, DataflowAnalysisException {				ValueNumberAnalysis vna = new ValueNumberAnalysis(methodGen, new DepthFirstSearch(cfg).search());				ValueNumberDataflow vnaDataflow = new ValueNumberDataflow(cfg, vna);				vnaDataflow.execute();				return new LockResourceTracker(lookupFailureCallback, vnaDataflow);			}		};		driver.execute(classFile, methodName, offset);	}