@Override
    public void visitPyClass(@NotNull PyClass node) {
      final PsiElement[] superClasses = node.getSuperClassExpressions();

      if (superClasses.length == 0 ||
          superClasses.length == 1 && OBJECT.equals(superClasses[0].getText()) ||
          !superHasNonAbstractConstructor(node, myTypeEvalContext)) {
        return;
      }

      final PyFunction initMethod = node.findMethodByName(INIT, false, myTypeEvalContext);

      if (initMethod == null || isExceptionClass(node, myTypeEvalContext) || hasConstructorCall(node, initMethod, myTypeEvalContext)) {
        return;
      }

      if (superClasses.length == 1 || node.isNewStyleClass(myTypeEvalContext)) {
        registerProblem(initMethod.getNameIdentifier(), PyPsiBundle.message("INSP.missing.super.constructor.message"),
                        new AddCallSuperQuickFix());
      }
      else {
        registerProblem(initMethod.getNameIdentifier(), PyPsiBundle.message("INSP.missing.super.constructor.message"));
      }
    }
@Override
    public void visitPyClass(@NotNull PyClass node)