code: private void processIntegerReturn() {
          if ((sawConstant == null) && (stack.getStackDepth() == 0)) {
              throw new StopOpcodeParsingException();
          }
  
          Integer returnValue = null;
          if (sawConstant == null) {
              OpcodeStack.Item item = stack.getStackItem(0);
              returnValue = (Integer) item.getConstant();
          } else {
              returnValue = sawConstant;
          }
  
          if (returnValue == null) {
              throw new StopOpcodeParsingException();
          }
          int v = returnValue.intValue();
          if (v < 0) {
              seenNegative = true;
              if (getPC() > furthestBranchTarget) {
                  seenUnconditionalNonZero = true;
              }
          } else if (v > 0) {
              seenPositive = true;
              if (getPC() > furthestBranchTarget) {
                  seenUnconditionalNonZero = true;
              }
          } else {
              seenZero = true;
          }
  
          sawConstant = null;
      }
docs: processes an IRETURN looking for Const and categorizes them as negative, zero or positive. it also records a unconditional return of a non zero value
  Throws StopOpcodeParsingException if a return value (constant) is indeterminate