if (publicFields.contains(f)) { isPublic++; continue;
if (volatileOrFinalFields.contains(f)) { volatileOrFinalCount++; continue;
public void report() {	int noLocked = 0;	int noUnlocked = 0;	int isPublic = 0;	int couldBeFinal = 0;	int noLocalLocks = 0;	int volatileOrFinalCount = 0;	int mostlyUnlocked = 0;	for(Iterator<Map.Entry<FieldAnnotation, int[]>> i = stats.entrySet().iterator(); i.hasNext(); ) {		Map.Entry<FieldAnnotation, int[]> e = i.next();		FieldAnnotation f = e.getKey();		int [] theseStats  =  e.getValue();		int locked =  theseStats[READ_LOCKED] + theseStats[WRITTEN_LOCKED];		int biasedLocked =  theseStats[READ_LOCKED] + 2*theseStats[WRITTEN_LOCKED];		int unlocked =  theseStats[READ_UNLOCKED] + theseStats[WRITTEN_UNLOCKED];		int biasedUnlocked =  theseStats[READ_UNLOCKED] + 2*theseStats[WRITTEN_UNLOCKED];		int writes =  theseStats[WRITTEN_LOCKED] + theseStats[WRITTEN_UNLOCKED];		if (locked == 0) {			noLocked++;			continue;			}		if (unlocked == 0)  {			noUnlocked++;			continue;			}		if (theseStats[READ_UNLOCKED] > 0 && 2*biasedUnlocked > biasedLocked) {			if (DEBUG) System.out.println("Mostly unlocked for " + f + ":");		int freq = (100 * locked) / (locked + unlocked);		if (DEBUG) {			System.out.print(freq				+ "	");		for(int j = 0; j < 4; j++)			System.out.print(theseStats[j] + "	");		System.out.println(f);			}			mostlyUnlocked++;			continue;			}		if (publicFields.contains(f)) {			isPublic++;			continue;			}		if (volatileOrFinalFields.contains(f)) {			volatileOrFinalCount++;			continue;			}		if (!writtenOutsideOfConstructor.contains(f)) {			couldBeFinal++;			continue;			}		if (!localLocks.contains(f)) {			if (DEBUG) System.out.println("No local locks of " + f);			noLocalLocks++;			continue;			}		int freq = (100 * locked) / (locked + unlocked);		bugReporter.reportBug(new BugInstance("IS_INCONSISTENT_SYNC", NORMAL_PRIORITY)			.addClass(f.getClassName())			.addField(f)			.addInt(freq).describe("INT_SYNC_PERCENT"));		if (DEBUG) {			System.out.print(freq				+ "	");		for(int j = 0; j < 4; j++)			System.out.print(theseStats[j] + "	");		System.out.println(f);			}		}		if (DEBUG) {		int total = stats.size();		System.out.println("        Total fields: " + total);		System.out.println("  No locked accesses: " + noLocked);		System.out.println("No unlocked accesses: " + noUnlocked);		System.out.println("     Mostly unlocked: " + mostlyUnlocked);		System.out.println("       public fields: " + isPublic);		if (couldBeFinal > 0) 			System.out.println("      could be Final: " + couldBeFinal);		System.out.println("   volatile or final: " + volatileOrFinalCount);		System.out.println("      no local locks: " + noLocalLocks);		System.out.println(" questionable fields: " + (total - noLocked - noUnlocked - isPublic - volatileOrFinalCount - couldBeFinal - noLocalLocks - mostlyUnlocked));		}	}