code: @Override
      public void sawOpcode(int seen) {
          try {
              stack.precomputation(this);
  
              if ((seen == Const.CHECKCAST) && (stack.getStackDepth() > 0)) {
                  OpcodeStack.Item item = stack.getStackItem(0);
                  if (item.getRegisterNumber() == 1) {
                      String thisCls = getClassName();
                      String equalsCls = getClassConstantOperand();
                      if (!thisCls.equals(equalsCls)) {
                          JavaClass thisJavaClass = getClassContext().getJavaClass();
                          JavaClass equalsJavaClass = Repository.lookupClass(equalsCls);
                          boolean inheritance = thisJavaClass.instanceOf(equalsJavaClass) || equalsJavaClass.instanceOf(thisJavaClass);
  
                          BugInstance bug = new BugInstance(this, BugType.NSE_NON_SYMMETRIC_EQUALS.name(), inheritance ? LOW_PRIORITY : NORMAL_PRIORITY)
                                  .addClass(this).addMethod(this).addSourceLine(this).addString(equalsCls);
                          Map<String, BugInstance> bugs = possibleBugs.get(thisCls);
                          if (bugs == null) {
                              bugs = new HashMap<>();
                              possibleBugs.put(thisCls, bugs);
                          }
                          bugs.put(equalsCls, bug);
                      }
                  }
              }
          } catch (ClassNotFoundException cnfe) {
              bugReporter.reportMissingClass(cnfe);
          } finally {
              stack.sawOpcode(this, seen);
          }
      }
docs: implements the visitor to look for checkcasts of the parameter to other types, and enter instances in a map for further processing in doReport.
  
  @param seen
  the opcode of the currently parsed instruction