}
};  driver.execute(argv[0]);
	public static void main(String[] argv) throws Exception {		if (argv.length != 1) {			System.err.println("Usage: " + BlockTypeAnalysis.class.getName() + " <classfile>");			System.exit(1);		}		RepositoryLookupFailureCallback lookupFailureCallback = new DebugRepositoryLookupFailureCallback();		AnalysisContext analysisContext = AnalysisContext.create(lookupFailureCallback);		JavaClass jclass = new ClassParser(argv[0]).parse();		ClassContext classContext = analysisContext.getClassContext(jclass);		String methodName = SystemProperties.getProperty("blocktype.method");		Method[] methodList = jclass.getMethods();		for (Method method : methodList) {			if (method.isNative() || method.isAbstract())				continue;			if (methodName != null && !methodName.equals(method.getName()))				continue;			System.out.println("Method: " + method.getName());			CFG cfg = classContext.getCFG(method);			DepthFirstSearch dfs = classContext.getDepthFirstSearch(method);			final BlockTypeAnalysis analysis = new BlockTypeAnalysis(dfs);			Dataflow<BlockType, BlockTypeAnalysis> dataflow =					new Dataflow<BlockType, BlockTypeAnalysis>(cfg, analysis);			dataflow.execute();			if (SystemProperties.getBoolean("blocktype.printcfg")) {				CFGPrinter cfgPrinter = new CFGPrinter(cfg) {					@Override                                         public String blockAnnotate(BasicBlock block) {						BlockType blockType = analysis.getResultFact(block);						return " [Block type: " + blockType.toString() + "]";					}				};				cfgPrinter.print(System.out);			}		}	}