if (stats.getNumGetterMethodAccesses() == unlocked)
if (stats.getNumGetterMethodAccesses() >= unlocked)
	public void report() {		for (Iterator<Map.Entry<XField, FieldStats>> i = statMap.entrySet().iterator(); i.hasNext(); ) {			Map.Entry<XField, FieldStats> entry = i.next();			XField xfield = entry.getKey();			FieldStats stats = entry.getValue();			int numReadUnlocked = stats.getNumAccesses(READ_UNLOCKED);			int numWriteUnlocked = stats.getNumAccesses(WRITE_UNLOCKED);			int numReadLocked = stats.getNumAccesses(READ_LOCKED);			int numWriteLocked = stats.getNumAccesses(WRITE_LOCKED);			int locked =  numReadLocked + numWriteLocked;			int biasedLocked =  numReadLocked + 2 * numWriteLocked;			int unlocked =  numReadUnlocked + numWriteUnlocked;			int biasedUnlocked =  numReadUnlocked + 2 * numWriteUnlocked;			int writes =  numWriteLocked + numWriteUnlocked;			if (locked == 0)				continue;			if (unlocked == 0) 				continue;			if (numReadUnlocked > 0 && 2 * biasedUnlocked > biasedLocked)				continue;			// NOTE: we ignore access to public, volatile, and final fields			if (numWriteUnlocked + numWriteLocked == 0)				// No writes outside of constructor				continue;			if (stats.getNumLocalLocks() == 0)				continue;			int freq = (100 * locked) / (locked + unlocked);			if (freq < 50) continue;			// At this point, we report the field as being inconsistently synchronized			int priority = freq > 75 ? NORMAL_PRIORITY : LOW_PRIORITY;			if (stats.getNumGetterMethodAccesses() == unlocked)				// Unlocked accesses are only in getter method(s).				priority = LOW_PRIORITY;			BugInstance bugInstance = new BugInstance("IS2_INCONSISTENT_SYNC", priority)				.addClass(xfield.getClassName())				.addField(xfield)				.addInt(freq).describe("INT_SYNC_PERCENT");			// Add source lines for unsynchronized accesses			for (Iterator<SourceLineAnnotation> j = stats.unsyncAccessIterator(); j.hasNext(); ) {				SourceLineAnnotation accessSourceLine = j.next();				bugInstance.addSourceLine(accessSourceLine).describe("SOURCE_LINE_UNSYNC_ACCESS");			}			if (SYNC_ACCESS) {				// Add source line for synchronized accesses;				// useful for figuring out what the detector is doing				for (Iterator<SourceLineAnnotation> j = stats.syncAccessIterator(); j.hasNext(); ) {					SourceLineAnnotation accessSourceLine = j.next();					bugInstance.addSourceLine(accessSourceLine).describe("SOURCE_LINE_SYNC_ACCESS");				}			}			bugReporter.reportBug(bugInstance);		}	}