if (!firstFieldUse.containsKey(name)) { SourceLineAnnotation sla = SourceLineAnnotation.fromVisitedInstruction(this); firstFieldUse.put(name, sla); }
	public void sawOpcode(int seen) {		// System.out.println("saw	"	+ OPCODE_NAMES[seen] + "	" + zeroOnTOS);		switch (seen) {		case GETSTATIC:		case PUTSTATIC:			boolean samePackage =			        packageName.equals(extractPackage(getClassConstantOperand()));			boolean initOnly =			        seen == GETSTATIC ||			        getClassName().equals(getClassConstantOperand())			        && inStaticInitializer;			boolean safeValue =			        seen == GETSTATIC || emptyArrayOnTOS			        || !mutableSignature(getSigConstantOperand());			String name = (getClassConstantOperand() + "." + getNameConstantOperand())			        .replace('/', '.');			/*			System.out.println("In " + betterClassName				+ " accessing "				+ (classConstant + "." + nameConstant)				+ "	" + samePackage				+ "	" + initOnly				+ "	" + safeValue				);			*/			if (!samePackage)				outsidePackage.add(name);			if (!initOnly)				notFinal.add(name);			if (!safeValue)				unsafeValue.add(name);			break;		case ANEWARRAY:		case NEWARRAY:			if (zeroOnTOS)				emptyArrayOnTOS = true;			zeroOnTOS = false;			return;		case ICONST_0:			zeroOnTOS = true;			emptyArrayOnTOS = false;			return;		}		zeroOnTOS = false;		emptyArrayOnTOS = false;	}