void (@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); } }