private static void checkCollectorRegistration(@NotNull Project project,
                                                 @NotNull PsiClass checkedClass,
                                                 @NotNull HighlightSink sink,
                                                 @NotNull StatisticsCollectorType collectorType) {
    String qualifiedName = ClassUtil.getJVMClassName(checkedClass);
    if (qualifiedName == null) {
      return;
    }
    AtomicBoolean isCollectorRegistered = new AtomicBoolean(false);
    processExtensionDeclarations(getNameToSearch(checkedClass, qualifiedName), project, false, (extension, tag) -> {
      ExtensionPoint point = extension.getExtensionPoint();
      if (point != null && point.getEffectiveQualifiedName().equals(collectorType.getExtensionPoint()) &&
          ContainerUtil.exists(tag.getAttributes(), it -> Objects.equals(it.getValue(), qualifiedName))) {
        isCollectorRegistered.set(true);
        return false;
      }
      return true;
    });

    if (isCollectorRegistered.get()) {
      return;
    }

    ExtensionPointLocator extensionPointLocator = new ExtensionPointLocator(checkedClass);
    Set<ExtensionPointCandidate> candidateList = extensionPointLocator.findSuperCandidates();
    if (!candidateList.isEmpty()) {
      RegisterExtensionFix fix = new RegisterExtensionFix(checkedClass, candidateList);
      sink.highlight(DevKitBundle.message("inspections.statistics.collector.not.registered.message"), fix);
    }
  }
private static void checkCollectorRegistration(@NotNull Project project,
                                                 @NotNull PsiClass checkedClass,
                                                 @NotNull HighlightSink sink,
                                                 @NotNull StatisticsCollectorType collectorType)