}
	public void sawOpcode(int seen) {		switch (seen) {		case ICONST_M1: noteVal(-1); return;		case ICONST_0:  noteVal(0); return;		case ICONST_1:  noteVal(1); return;		case ICONST_2:  noteVal(2); return;		case ICONST_3:  noteVal(3); return;		case ICONST_4:  noteVal(4); return;		case ICONST_5:  noteVal(5); return;		case LCONST_0:  noteVal(0); return;		case LCONST_1:  noteVal(1); return;		case BIPUSH: return;  /* will pick up value via sawInt */		case LDC2_W: return;  /* will pick up value via sawLong */		case IAND: case LAND: bitop = IAND; checkState(1); return;		case IOR:  case LOR:  bitop = IOR;  checkState(1); return;		case LCMP: return; /* Ignore. An 'if' opcode will follow */		case IFEQ: case IFNE:			/* special case: if arg1 is 0 it will not be pushed */			if (state == 2) {				arg1 = 0; state = 3;			}			/* fallthrough */		case IF_ICMPEQ: case IF_ICMPNE:			checkState(3);			if (state != 4)				return;			break; /* the only break in this switch!  gross */		default:			state = 0;			return;		}		/* We have matched the instruction pattern, so check the args */		long dif; String t;		if (bitop == IOR)			{ dif = arg0 & ~arg1; t = "BIT_IOR"; }		else if (arg0 != 0 || arg1 != 0)			{ dif = arg1 & ~arg0; t = "BIT_AND"; }		else			{ dif = 1; t = "BIT_AND_ZZ"; }		if (dif != 0)			bugReporter.reportBug(new BugInstance(t, NORMAL_PRIORITY)						.addClassAndMethod(this)						.addSourceLine(this));		state = 0;		}