if (DEBUG) { System.out.print( "=====================================================================\n"+ "Method " + methodGen.getName() + "\n" + "=====================================================================\n"); }
	public void visitClassContext(ClassContext classContext) {		try {			ByteCodePattern pattern = getPattern();			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(method, classContext))					continue;					MethodGen methodGen = classContext.getMethodGen(method);				ConstantPoolGen cpg = methodGen.getConstantPool();				CFG cfg = classContext.getCFG(method);				DepthFirstSearch dfs = classContext.getDepthFirstSearch(method);				ValueNumberDataflow vnaDataflow = classContext.getValueNumberDataflow(method);				if (DEBUG) {					System.out.print(						"=====================================================================\n"+						"Method " + methodGen.getName() + "\n" +						"=====================================================================\n");				}				PatternMatcher matcher = new PatternMatcher(pattern, cfg, cpg, dfs, vnaDataflow);				matcher.execute();					Iterator<ByteCodePatternMatch> j = matcher.byteCodePatternMatchIterator();				while (j.hasNext()) {					ByteCodePatternMatch match = j.next();					if (DEBUG) {						System.out.println("Pattern match:");						Iterator<PatternElementMatch> pemIter = match.patternElementMatchIterator();						while (pemIter.hasNext()) {							PatternElementMatch pem = pemIter.next();							System.out.println("\t" + pem.toString());						}					}					reportMatch(methodGen, match);				}			}		} catch (DataflowAnalysisException e) {			throw new AnalysisException("BCPDoubleCheck caught exception", e);		}	}