@Override
  public ProblemDescriptor @Nullable [] checkClass(@NotNull UClass uClass, @NotNull InspectionManager manager, boolean isOnTheFly) {
    PsiClass checkedClass = uClass.getJavaPsi();
    final PsiIdentifier nameIdentifier = checkedClass.getNameIdentifier();
    if (nameIdentifier != null &&
        checkedClass.getQualifiedName() != null &&
        checkedClass.getContainingFile().getVirtualFile() != null &&
        !checkedClass.isInterface() &&
        !checkedClass.isEnum() &&
        !checkedClass.hasModifierProperty(PsiModifier.PRIVATE) &&
        !checkedClass.hasModifierProperty(PsiModifier.PROTECTED) &&
        !PsiUtil.isInnerClass(checkedClass)) {
      final RegistrationCheckerUtil.RegistrationType registrationType = RegistrationCheckerUtil.RegistrationType.ALL;
      final Set<PsiClass> componentClasses = RegistrationCheckerUtil.getRegistrationTypes(checkedClass, registrationType);
      if (componentClasses != null && !componentClasses.isEmpty()) {
        PsiElement sourcePsi = uClass.getSourcePsi();
        if (sourcePsi == null) return null;

        ProblemsHolder holder = createProblemsHolder(uClass, manager, isOnTheFly);

        for (PsiClass componentClass : componentClasses) {
          if (ActionType.ACTION.myClassName.equals(componentClass.getQualifiedName()) &&
              !checkedClass.isInheritor(componentClass, true)) {
            ModCommandAction fix = sourcePsi.getLanguage().is(JavaLanguage.INSTANCE) ?
                                   ImplementOrExtendFix.createFix(checkedClass, componentClass) :
                                   null;
            ProblemHolderUtilKt.registerUProblem(holder, uClass,
                                                 DevKitBundle.message("inspections.registration.problems.incompatible.message",
                                                                      componentClass.getQualifiedName()),
                                                 LocalQuickFix.notNullElements(LocalQuickFix.from(fix)));
          }
        }
        if (ActionType.ACTION.isOfType(checkedClass) && !hasNoArgConstructor(checkedClass)) {
          // creating a constructor with UAST is not possible until IDEA-303510 is solved
          LocalQuickFix[] fixes = sourcePsi.getLanguage().is(JavaLanguage.INSTANCE) ?
                                  new LocalQuickFix[]{new CreateConstructorFix(checkedClass, isOnTheFly)} :
                                  LocalQuickFix.EMPTY_ARRAY;
          ProblemHolderUtilKt.registerUProblem(holder, uClass, DevKitBundle.message("inspections.registration.problems.missing.noarg.ctor"),
                                               fixes);
        }
        if (checkedClass.hasModifierProperty(PsiModifier.ABSTRACT)) {
          ProblemHolderUtilKt.registerUProblem(holder, uClass, DevKitBundle.message("inspections.registration.problems.abstract"));
        }
        return holder.getResultsArray();
      }
    }
    return null;
  }
@Override
  public ProblemDescriptor @Nullable [] checkClass(@NotNull UClass uClass, @NotNull InspectionManager manager, boolean isOnTheFly)