int kind = 0; kind |= isLocked ? LOCKED : UNLOCKED; kind |= (ins.getOpcode() == Constants.GETFIELD) ? READ : WRITE;  FieldStats stats = getStats(xfield); stats.addAccess(kind);
	private void analyzeMethod(ClassContext classContext, Method method, Set<Method> lockedMethodSet)		throws CFGBuilderException, DataflowAnalysisException {		final InnerClassAccessMap icam = InnerClassAccessMap.instance();		final ConstantPoolGen cpg = classContext.getConstantPoolGen();		final CFG cfg = classContext.getCFG(method);		final LockDataflow lockDataflow = classContext.getLockDataflow(method);		final ValueNumberDataflow vnaDataflow = classContext.getValueNumberDataflow(method);		new LocationScanner(cfg).scan(new LocationScanner.Callback() {			public void visitLocation(Location location) throws CFGBuilderException, DataflowAnalysisException {				Instruction ins = location.getHandle().getInstruction();				if (ins instanceof FieldInstruction) {					try {						FieldInstruction fins = (FieldInstruction) ins;						XField xfield = Lookup.findXField(fins, cpg);						if (!xfield.isStatic()) {							// See if the field access is self-locked.							ValueNumberFrame frame = vnaDataflow.getFactAtLocation(location);							ValueNumber instance = frame.getInstance(fins, cpg);							LockSet lockSet = lockDataflow.getFactAtLocation(location);							boolean isLocked = lockSet.getLockCount(instance.getNumber()) > 0;						}						// FIXME: should we do something for static fields?					} catch (ClassNotFoundException e) {						bugReporter.reportMissingClass(e);					}				}			}		});	}