switch (seen) { case ALOAD_0: thisOnTOS = true; return; case MONITOREXIT: setFields.clear(); break; case PUTFIELD: if (getClassConstantOperand().equals(getClassName())) setFields.add(getNameConstantOperand()); break; case GETFIELD: if (thisOnTOS && getClassConstantOperand().equals(getClassName()) && setFields.contains(getNameConstantOperand()) && asUnsignedByte(codeBytes[getPC()+3]) == DUP && asUnsignedByte(codeBytes[getPC()+5]) == MONITORENTER ) bugReporter.reportBug(new BugInstance("ML_SYNC_ON_UPDATED_FIELD", NORMAL_PRIORITY) .addClassAndMethod(this) .addReferencedField(this) .addSourceLine(this, getPC() + 5)); break; default:
switch (seen) { case ALOAD_0: thisOnTOS = true; return; case MONITOREXIT: setFields.clear(); break; case PUTFIELD: if (getClassConstantOperand().equals(getClassName())) setFields.add(getNameConstantOperand()); break; case GETFIELD: if (thisOnTOS && getClassConstantOperand().equals(getClassName()) && setFields.contains(getNameConstantOperand()) && asUnsignedByte(codeBytes[getPC() + 3]) == DUP && asUnsignedByte(codeBytes[getPC() + 5]) == MONITORENTER ) bugReporter.reportBug(new BugInstance("ML_SYNC_ON_UPDATED_FIELD", NORMAL_PRIORITY) .addClassAndMethod(this) .addReferencedField(this) .addSourceLine(this, getPC() + 5)); break; default: } thisOnTOS = false;
    public void sawOpcode(int seen) {	switch (seen) {	case ALOAD_0:		thisOnTOS = true;		return;	case MONITOREXIT:		setFields.clear();		break;	case PUTFIELD:		if (getClassConstantOperand().equals(getClassName()))			setFields.add(getNameConstantOperand());		break;	case GETFIELD: 		if (thisOnTOS && getClassConstantOperand().equals(getClassName())			&& setFields.contains(getNameConstantOperand())			&& asUnsignedByte(codeBytes[getPC()+3]) == DUP			&& asUnsignedByte(codeBytes[getPC()+5]) == MONITORENTER			) 		  bugReporter.reportBug(new BugInstance("ML_SYNC_ON_UPDATED_FIELD", NORMAL_PRIORITY)			.addClassAndMethod(this)			.addReferencedField(this)			.addSourceLine(this, getPC() + 5));		break;	default: 	}        thisOnTOS = false;	}	