case TABLESWITCH: case LOOKUPSWITCH: switchPC = getPC(); inSwitch = true; swOffsets = getSwitchOffsets();  defSwOffset = getDefaultSwitchOffset(); reachable = false; nextIndex = 0; break; default: }  if (inSwitch) { if (nextIndex >= swOffsets.length) inSwitch = false;  if (inSwitch) { if ((getPC() == (switchPC + swOffsets[nextIndex])) &&  (swOffsets[nextIndex] != defSwOffset)) { if (nextIndex > 0 && reachable) { if (!hasFallThruComment(lastPC + 1, getPC() - 1)) bugReporter.reportBug(new BugInstance(this, "SF_SWITCH_FALLTHROUGH", LOW_PRIORITY) .addClassAndMethod(this) .addSourceLineRange(this, lastPC, getPC())); } do { nextIndex++; if (nextIndex >= swOffsets.length) { inSwitch = false; break; } } while (getPC() == switchPC + swOffsets[nextIndex]); } }  switch (seen) {
	public void sawOpcode(int seen) {				switch (seen) {		case TABLESWITCH:		case LOOKUPSWITCH:			switchPC = getPC();			inSwitch = true;			swOffsets = getSwitchOffsets();//			swLabels = getSwitchLabels();			defSwOffset = getDefaultSwitchOffset();			reachable = false;			nextIndex = 0;			break;				default:		}				if (inSwitch) {			if (nextIndex >= swOffsets.length)				inSwitch = false;			if (inSwitch) {				if ((getPC() == (switchPC + swOffsets[nextIndex]))				&&  (swOffsets[nextIndex] != defSwOffset)) {					if (nextIndex > 0 && reachable) {						if (!hasFallThruComment(lastPC + 1, getPC() - 1))							bugReporter.reportBug(new BugInstance(this, "SF_SWITCH_FALLTHROUGH", LOW_PRIORITY)			        			.addClassAndMethod(this)			        			.addSourceLineRange(this, lastPC, getPC()));					}					do {						nextIndex++;						if (nextIndex >= swOffsets.length) {							inSwitch = false;							break;						}					} while (getPC() == switchPC + swOffsets[nextIndex]);				}			}				switch (seen) {			case TABLESWITCH:			case LOOKUPSWITCH:			case ATHROW:			case RETURN:			case ARETURN:			case IRETURN:			case LRETURN:			case DRETURN:			case FRETURN:			case GOTO_W:			case GOTO:				reachable = false;				break;			default:				reachable = true;			}		}				lastPC = getPC();	}