@Override
    public void visitPyClass(@NotNull PyClass node) {
      final PyClass outerClass = PsiTreeUtil.getParentOfType(node, PyClass.class);
      assert node != null;
      if (outerClass != null && StringUtil.equalsIgnoreCase("meta", node.getName())) {
        return;
      }
      final List<PyClassLikeType> types = node.getAncestorTypes(myTypeEvalContext);
      if (PyTypedDictTypeProvider.Companion.isTypingTypedDictInheritor(node, myTypeEvalContext)) return;
      for (PyClassLikeType type : types) {
        if (type == null) return;
        final String qName = type.getClassQName();
        if (qName != null && qName.contains(PyNames.TEST_CASE)) return;
        if (!(type instanceof PyClassType)) return;
      }

      final PyFunction init = node.findInitOrNew(true, myTypeEvalContext);
      if (init == null) {
        registerProblem(node.getNameIdentifier(), PyPsiBundle.message("INSP.class.has.no.init"),
                        new AddMethodQuickFix(PyNames.INIT, node.getName(), false));
      }
    }
@Override
    public void visitPyClass(@NotNull PyClass node)