bugReporter.reportBug(new BugInstance("EI_EXPOSE_STATIC_REP2", NORMAL_PRIORITY)
bugReporter.reportBug(new BugInstance(this, "EI_EXPOSE_STATIC_REP2", NORMAL_PRIORITY)
	public void sawOpcode(int seen) {		assert check;		/*		System.out.println("Saw " + PC + ": " + OPCODE_NAMES[seen] + "	"				+ thisOnTOS				+ "	"				+ fieldOnTOS				);		*/		if (staticMethod && dangerousToStoreIntoField && seen == PUTSTATIC		        && MutableStaticFields.mutableSignature(getSigConstantOperand())) {			bugReporter.reportBug(new BugInstance("EI_EXPOSE_STATIC_REP2", NORMAL_PRIORITY)			        .addClassAndMethod(this)			        .addField(getDottedClassConstantOperand(), getNameConstantOperand(), getSigConstantOperand(),			                true)			        .addSourceLine(this));		}		if (!staticMethod && dangerousToStoreIntoField && seen == PUTFIELD		        && MutableStaticFields.mutableSignature(getSigConstantOperand())) {			bugReporter.reportBug(new BugInstance("EI_EXPOSE_REP2", NORMAL_PRIORITY)			        .addClassAndMethod(this)			        .addField(getDottedClassConstantOperand(), getNameConstantOperand(), getSigConstantOperand(),			                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 be 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 = getRegisterOperand();				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 && getClassConstantOperand().equals(getClassName())) {			fieldOnTOS = true;			thisOnTOS = false;			nameOnStack = getNameConstantOperand();			classNameOnStack = getDottedClassConstantOperand();			sigOnStack = getSigConstantOperand();			fieldIsStatic = false;			// System.out.println("Saw getfield");			return;		}		if (seen == GETSTATIC && getClassConstantOperand().equals(getClassName())) {			fieldOnTOS = true;			thisOnTOS = false;			nameOnStack = getNameConstantOperand();			classNameOnStack = getDottedClassConstantOperand();			sigOnStack = getSigConstantOperand();			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;	}