JavaClass javaClass = classContext.getJavaClass(); if (DEBUG) System.out.println("******** Analyzing class " + javaClass.getClassName());   SelfCalls selfCalls = new SelfCalls(classContext) { public boolean wantCallsFor(Method method) { return !method.isPublic(); } };
	public void visitClassContext(ClassContext classContext) {		try {			JavaClass javaClass = classContext.getJavaClass();			if (DEBUG) System.out.println("******** Analyzing class " + javaClass.getClassName());			// Build self-call graph			SelfCalls selfCalls = new SelfCalls(classContext) {				public boolean wantCallsFor(Method method) {					return !method.isPublic();				}			};			selfCalls.execute();			CallGraph callGraph = selfCalls.getCallGraph();			if (DEBUG)				System.out.println("Call graph (not unlocked methods): " + callGraph.getNumVertices() + " nodes, " +				        callGraph.getNumEdges() + " edges");			// Find call edges that are obviously locked			Set<CallSite> obviouslyLockedSites = findObviouslyLockedCallSites(classContext, selfCalls);			Set<Method> lockedMethodSet = findNotUnlockedMethods(classContext, selfCalls, obviouslyLockedSites);			lockedMethodSet.retainAll(findLockedMethods(classContext, selfCalls, obviouslyLockedSites));			Set<Method> publicReachableMethods			        = findPublicReachableMethods(classContext, selfCalls);			Iterator<Method> i = publicReachableMethods.iterator();			while (i.hasNext()) {				Method method = i.next();				if (classContext.getMethodGen(method) == null)					continue;				/*				if (isConstructor(method.getName()))					continue;				*/				if (method.getName().startsWith("access$"))				// Ignore inner class access methods;				// we will treat calls to them as field accesses					continue;				analyzeMethod(classContext, method, lockedMethodSet);			}		} catch (CFGBuilderException e) {			throw new AnalysisException("FindInconsistentSync2 caught exception: " + e.toString(), e);		} catch (DataflowAnalysisException e) {			//e.printStackTrace();			throw new AnalysisException("FindInconsistentSync2 caught exception: " + e.toString(), e);		}	}