if (isLocked && isLocal)
if (isExplicitlyLocked && isLocal)
			public void visitLocation(Location location) throws CFGBuilderException, DataflowAnalysisException {				try {					Instruction ins = location.getHandle().getInstruction();					XField xfield = null;					boolean isWrite = false;					boolean isLocal = false;					if (ins instanceof FieldInstruction) {						FieldInstruction fins = (FieldInstruction) ins;						xfield = Lookup.findXField(fins, cpg);						isWrite = ins.getOpcode() == Constants.PUTFIELD;						isLocal = fins.getClassName(cpg).equals(classContext.getJavaClass().getClassName());						if (DEBUG) System.out.println("Handling field access: " + location.getHandle() +							" (frame=" + vnaDataflow.getFactAtLocation(location) + ")");					} else if (ins instanceof INVOKESTATIC) {						INVOKESTATIC inv = (INVOKESTATIC) ins;						InnerClassAccess access = icam.getInnerClassAccess(inv, cpg);						if (access != null && access.getMethodSignature().equals(inv.getSignature(cpg))) {							xfield = access.getField();							isWrite = !access.isLoad();							isLocal = false;							if (DEBUG) System.out.println("Handling inner class access: " + location.getHandle() +								" (frame=" + vnaDataflow.getFactAtLocation(location) + ")");						}					}					// We only care about mutable nonvolatile nonpublic instance fields.					if (xfield != null &&						!(xfield.isStatic() || xfield.isPublic() || xfield.isVolatile() || xfield.isFinal())) {						ValueNumberFrame frame = vnaDataflow.getFactAtLocation(location);						ValueNumber thisValue = !method.isStatic() ? vnaDataflow.getAnalysis().getThisValue() : null;						LockSet lockSet = lockDataflow.getFactAtLocation(location);						InstructionHandle handle = location.getHandle();										// Is the instance locked?						// We consider the access to be locked if either						//   - the object is explicitly locked, or						//   - the field is accessed through the "this" reference,						//     and the method is in the locked method set						ValueNumber instance = frame.getInstance(handle.getInstruction(), cpg);						boolean isLocked = lockSet.getLockCount(instance.getNumber()) > 0							|| (lockedMethodSet.contains(method) && thisValue != null && thisValue.equals(instance));										int kind = 0;						kind |= isLocked ? LOCKED : UNLOCKED;						kind |= isWrite ? WRITE : READ;										if (DEBUG) System.out.println("IS2:\t" +							SignatureConverter.convertMethodSignature(classContext.getMethodGen(method)) +							"\t" + xfield + "\t" + ((isWrite ? "W" : "R") + "/" + (isLocked ? "L" : "U")));										FieldStats stats = getStats(xfield);						stats.addAccess(kind);										if (isLocked && isLocal)							stats.addLocalLock();										stats.addAccess(classContext, method, handle, isLocked);					}					// FIXME: should we do something for static fields?				} catch (ClassNotFoundException e) {					bugReporter.reportMissingClass(e);				}			}