code: @Override
      public void sawOpcode(int seen) {
          if (isInitializer) {
              lookForCustomThreadFactoriesInConstructors(seen);
              return;
          }
  
          try {
              stack.precomputation(this);
  
              if ((seen == Const.INVOKEVIRTUAL) || (seen == Const.INVOKEINTERFACE)) {
                  processInvoke();
              }
              // TODO Should not include private methods
              else if (seen == Const.ARETURN) {
                  removeFieldsThatGetReturned();
              } else if (seen == Const.PUTFIELD) {
                  XField f = getXFieldOperand();
                  if (f != null) {
                      reportOverwrittenField(f);
                  }
              } else if (seen == Const.IFNONNULL) {
                  // indicates a null check, which means that we get an exemption
                  // until the end of the branch
                  OpcodeStack.Item nullCheckItem = stack.getStackItem(0);
                  XField fieldWhichWasNullChecked = nullCheckItem.getXField();
                  if (fieldWhichWasNullChecked != null) {
                      exemptExecutors.put(fieldWhichWasNullChecked, Integer.valueOf(getPC() + getBranchOffset()));
                  }
              }
          } finally {
              stack.sawOpcode(this, seen);
          }
      }
docs: Browses for calls to shutdown() and shutdownNow(), and if they happen, remove the hanging candidate, as there is a chance it will be called.
  
  @param seen
  the opcode of the currently parsed instruction