code: @Override
      public void sawOpcode(int seen) {
          try {
              stack.precomputation(this);
  
              int pc = getPC();
              CodeException ex = catchHandlerPCs.get(Integer.valueOf(pc));
              if (ex != null) {
                  int endPC;
                  if ((seen == Const.GOTO) || (seen == Const.GOTO_W)) {
                      endPC = this.getBranchTarget();
                  } else {
                      endPC = Integer.MAX_VALUE;
                  }
                  ConstantPool pool = getConstantPool();
                  ConstantClass ccls = (ConstantClass) pool.getConstant(ex.getCatchType());
                  String catchSig = ccls.getBytes(pool);
                  CatchInfo ci = new CatchInfo(ex.getHandlerPC(), endPC, catchSig);
                  catchInfos.add(ci);
              }
  
              updateEndPCsOnCatchRegScope(catchInfos, pc, seen);
              removeFinishedCatchBlocks(catchInfos, pc);
  
              if (seen == Const.ATHROW) {
                  processThrow();
              } else if ((seen == Const.IRETURN) && isBooleanMethod && !hasValidFalseReturn && (stack.getStackDepth() > 0)) {
                  processBooleanReturn();
              }
  
          } finally {
              stack.sawOpcode(this, seen);
          }
      }
docs: overrides the visitor to find catch blocks that throw runtime exceptions
  
  @param seen the opcode of the currently parsed instruction