switch(seen) { case ARETURN: case IRETURN: case LRETURN: case RETURN: case DRETURN: case FRETURN: seenTransferOfControl = true;
if (DEBUG ) { System.out.println(stack); System.out.println(OPCODE_NAMES[seen]); }   if ((seen == INVOKEVIRTUAL || seen == INVOKESPECIAL || seen == INVOKEINTERFACE || seen == INVOKESTATIC) && getNameConstantOperand().equals(getMethodName()) && getSigConstantOperand().equals(getMethodSig()) && ((seen == INVOKESTATIC) == getMethod().isStatic()) && stack.getStackDepth() >= parameters)  { if (DEBUG ) { System.out.println("IL: Checking..."); System.out.println(getClassConstantOperand() + "." + getNameConstantOperand() + " : " + getSigConstantOperand()); System.out.println("vs. " + getClassName() + "." + getMethodName() + " : " + getMethodSig()); } if ( getClassConstantOperand().equals(getClassName()) || seen == INVOKEVIRTUAL || seen == INVOKEINTERFACE) {   int firstParameter = 0; if (getMethodName().equals("<init>")) firstParameter = 1; boolean match1 = !seenStateChange; for(int i = firstParameter; match1 && i < parameters; i++) { OpcodeStack.Item it = stack.getStackItem(parameters-1-i); if (!it.isInitialParameter() || it.getRegisterNumber() != i) match1 = false; } boolean match2 = !seenTransferOfControl; if (match2 && seen != INVOKESTATIC && !getNameConstantOperand().equals("<init>")) {   OpcodeStack.Item p = stack.getStackItem(parameters-1); if (!p.isInitialParameter() || p.getRegisterNumber() != 0) match2 = false; }  if (match1 || match2) bugReporter.reportBug(new BugInstance(this, "IL_INFINITE_RECURSIVE_LOOP", HIGH_PRIORITY) .addClassAndMethod(this) .addSourceLine(this) );
	public void sawOpcode(int seen) {		switch(seen) {			case ARETURN:			case IRETURN:			case LRETURN:			case RETURN:			case DRETURN:			case FRETURN:				seenTransferOfControl = true;			}		if (seenTransferOfControl) return;				if ((seen == INVOKEVIRTUAL) || (seen == INVOKESPECIAL) || (seen == INVOKEINTERFACE) || (seen == INVOKESTATIC)) 			if (getClassConstantOperand().equals(getClassName())			    && getNameConstantOperand().equals(getMethodName())			    && getSigConstantOperand().equals(getMethodSig())) 			if (seen == INVOKESTATIC 				|| getNameConstantOperand().equals("<init>")				|| thisOnTopOfStack 					&& getSigConstantOperand().startsWith("()")				)								bugReporter.reportBug(new BugInstance(this, "IL_INFINITE_RECURSIVE_LOOP", HIGH_PRIORITY)				        .addClassAndMethod(this));		thisOnTopOfStack = seen == ALOAD_0 && !staticMethod;	}