code: private void sawOpcodeLoop(final int seen) {
          try {
              stack.mergeJumps(this);
  
              switch (state) {
                  case SAW_NOTHING:
                      if ((seen == Const.IINC) && (getIntConstant() == 1)) {
                          loopReg = getRegisterOperand();
                          state = State.SAW_IINC;
                      }
                  break;
  
                  case SAW_IINC:
                      if ((seen == Const.GOTO) || (seen == Const.GOTO_W)) {
                          int branchTarget = getBranchTarget();
                          int pc = getPC();
                          if (branchTarget < pc) {
                              possibleForLoops.add(new ForLoop(branchTarget, pc, loopReg));
                          }
                      }
                      state = State.SAW_NOTHING;
                  break;
              }
  
              if ((seen == Const.INVOKEINTERFACE) && Values.SLASHED_JAVA_UTIL_LIST.equals(getClassConstantOperand()) && "size".equals(getNameConstantOperand())
                      && SignatureBuilder.SIG_VOID_TO_INT.equals(getSigConstantOperand())) {
                  sawListSize = true;
              }
          } finally {
              stack.sawOpcode(this, seen);
          }
      }
docs: the first pass of the method opcode to collet for loops information
  
  @param seen
  the currently parsed opcode