code: @Override
      public void sawOpcode(int seen) {
          if (downwardBranchTarget == -1) {
              switch (state) {
                  case SAW_NOTHING:
                      sawOpcodeAfterNothing(seen);
                  break;
  
                  case SAW_LOAD:
                      sawOpcodeAfterLoad(seen);
                  break;
  
                  case SAW_CHECKCAST:
                      sawOpcodeAfterCheckCast(seen);
                  break;
              }
  
              int insTarget = -1;
              if (((seen >= Const.IFEQ) && (seen <= Const.IF_ACMPNE)) || (seen == Const.GOTO) || (seen == Const.GOTO_W)) {
                  insTarget = getBranchTarget();
                  if (insTarget < getPC()) {
                      insTarget = -1;
                  }
              } else if ((seen == Const.LOOKUPSWITCH) || (seen == Const.TABLESWITCH)) {
                  insTarget = this.getDefaultSwitchOffset() + getPC();
              }
  
              if (insTarget > downwardBranchTarget) {
                  downwardBranchTarget = insTarget;
              }
          } else {
              state = State.SAW_NOTHING;
              if (getPC() >= downwardBranchTarget) {
                  downwardBranchTarget = -1;
              }
          }
      }
docs: implements the visitor to look for check casts of parameters to more specific types