code: private boolean returnFollows(boolean couldSeePop) {
  
          byte[] code = getCode().getCode();
          int nextPC = getNextPC();
  
          int nextOp = CodeByteUtils.getbyte(code, nextPC++);
  
          if ((nextOp >= Const.IRETURN) && (nextOp <= Const.RETURN)) {
              return true;
          } else if ((couldSeePop) && (nextOp == Const.POP)) {
              nextOp = CodeByteUtils.getbyte(code, nextPC++);
              if ((nextOp >= Const.IRETURN) && (nextOp <= Const.RETURN)) {
                  return true;
              }
          }
  
          nextOp = CodeByteUtils.getbyte(code, nextPC++);
          return (nextOp >= Const.IRETURN) && (nextOp <= Const.RETURN);
      }
docs: This attempts to see if there is some form of a return statement following the collection modifying statement in the loop. It is a bad cheat, because, we
  may allow a POP, or an ALOAD/ILOAD etc before the return. this is sloppy tho as it might be a multibyte instruction. It also might be a complex piece of
  code to load the return, or the method may not allow returns. But hopefully it's better than it was.
  
  @param couldSeePop
  if the preceding instruction returns a value, and thus might need to be popped
  
  @return when a following instruction issues some sort of return