.addField(betterClassConstant, nameConstant, betterSigConstant,
.addField(getClassConstantOperand(), getNameConstantOperand(), getSigConstantOperand(),
    public void sawOpcode(int seen) {	assert check;	/*	System.out.println("Saw " + PC + ": " + OPCODE_NAMES[seen] + "	" 			+ thisOnTOS			+ "	"			+ fieldOnTOS			);	*/	if (staticMethod && dangerousToStoreIntoField && seen == PUTSTATIC 			&& MutableStaticFields.mutableSignature(sigConstant) ) {			bugReporter.reportBug(new BugInstance("EI_EXPOSE_REP2", HIGH_PRIORITY)				.addClassAndMethod(this)				.addField(betterClassConstant, nameConstant, betterSigConstant, 						true)				.addSourceLine(this));		}	if (!staticMethod && dangerousToStoreIntoField && seen == PUTFIELD 			&& MutableStaticFields.mutableSignature(sigConstant) ) {		bugReporter.reportBug(new BugInstance("EI_EXPOSE_REP2", NORMAL_PRIORITY)			.addClassAndMethod(this)			.addField(betterClassConstant, nameConstant, betterSigConstant, 					true)			.addSourceLine(this));		/*		System.out.println("Store of parameter " 				+ r +"/" + parameterCount 				+ " into field of type " + sigConstant				+ " in " + betterMethodName);			bugReporter.reportBug(new BugInstance("EI_EXPOSE_REP2", NORMAL_PRIORITY)				.addClassAndMethod(this)				.addField(betterClassConstant, nameConstant, betterSigConstant, 						false)				.addSourceLine(this));	`	*/		}	dangerousToStoreIntoField = false;	int reg = -1; // this value should never bee seen	checkStore: {		switch(seen) {			case ALOAD_0: reg = 0; break;			case ALOAD_1: reg = 1; break;			case ALOAD_2: reg = 2; break;			case ALOAD_3: reg = 3; break;			case ALOAD: reg = register; break;			default: break checkStore;			}		if (reg < parameterCount)			timesRead[reg]++;		}	if (thisOnTOS && !staticMethod)  {		switch(seen) {			case ALOAD_1: 			case ALOAD_2: 			case ALOAD_3: 			case ALOAD:  				if (reg < parameterCount )  {					r = reg;					dangerousToStoreIntoField = true;					// System.out.println("Found dangerous value from parameter " + reg);					}			default: 			}		}	else if (staticMethod)  {		switch(seen) {			case ALOAD_0: 			case ALOAD_1: 			case ALOAD_2: 			case ALOAD_3: 			case ALOAD: 				if (reg < parameterCount ) {					r = reg;					dangerousToStoreIntoField = true;					}			default: 			}		}	if (seen == ALOAD_0 && !staticMethod)  {		thisOnTOS = true;		fieldOnTOS = false;		return;		}				if (thisOnTOS && seen == GETFIELD && classConstant.equals(className))  {		fieldOnTOS = true;		thisOnTOS = false;		nameOnStack = nameConstant;		classNameOnStack = betterClassConstant;		sigOnStack = sigConstant;		fieldIsStatic = false;		 // System.out.println("Saw getfield");		return;		}	if (seen == GETSTATIC && classConstant.equals(className))  {		fieldOnTOS = true;		thisOnTOS = false;		nameOnStack = nameConstant;		classNameOnStack = betterClassConstant;		sigOnStack = sigConstant;		fieldIsStatic = true;		return;		}	thisOnTOS = false;	if (check && fieldOnTOS && seen == ARETURN 		/*		&& !sigOnStack.equals("Ljava/lang/String;")		&& sigOnStack.indexOf("Exception") == -1		&& sigOnStack.indexOf("[") >= 0		*/		&& nameOnStack.indexOf("EMPTY") == -1		&& MutableStaticFields.mutableSignature(sigOnStack) 		) {			bugReporter.reportBug(new BugInstance(staticMethod ? "MS_EXPOSE_REP" : "EI_EXPOSE_REP", NORMAL_PRIORITY)				.addClassAndMethod(this)				.addField(classNameOnStack, nameOnStack, sigOnStack, fieldIsStatic)				.addSourceLine(this));		}	fieldOnTOS = false;	thisOnTOS = false;	}