Set<Method> lockedMethodSet = findNotUnlockedMethods(classContext); lockedMethodSet.retainAll(findLockedMethods(classContext));
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");   Set<CallSite> obviouslyLockedSites = findObviouslyLockedCallSites(classContext, selfCalls);  Set<Method> lockedMethodSet = findNotUnlockedMethods(classContext, selfCalls, obviouslyLockedSites); lockedMethodSet.retainAll(findLockedMethods(classContext, selfCalls, obviouslyLockedSites));
	public void visitClassContext(ClassContext classContext) {		try {			JavaClass javaClass = classContext.getJavaClass();			if (DEBUG) System.out.println("******** Analyzing class " + javaClass.getClassName());			Set<Method> lockedMethodSet = findNotUnlockedMethods(classContext);			lockedMethodSet.retainAll(findLockedMethods(classContext));			Method[] methodList = javaClass.getMethods();			for (int i = 0; i < methodList.length; ++i) {				Method method = methodList[i];				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) {			throw new AnalysisException("FindInconsistentSync2 caught exception: " + e.toString(), e);		}	}