void (@NotNull DomElement element, @NotNull DomElementAnnotationHolder holder, @NotNull DomHighlightingHelper helper) { if (!isAllowed(holder)) return; super.checkDomElement(element, holder, helper); ComponentModuleRegistrationChecker componentModuleRegistrationChecker = new ComponentModuleRegistrationChecker(myPluginModuleSetByModuleName, myRegistrationCheckIgnoreClassList, holder); if (element instanceof IdeaPlugin) { Module module = element.getModule(); if (module != null) { annotateIdeaPlugin((IdeaPlugin)element, holder, module); checkJetBrainsPlugin((IdeaPlugin)element, holder, module); checkPluginIcon((IdeaPlugin)element, holder, module); } } else if (element instanceof Extension) { annotateExtension((Extension)element, holder, componentModuleRegistrationChecker); } else if (element instanceof ExtensionPoint) { annotateExtensionPoint((ExtensionPoint)element, holder, componentModuleRegistrationChecker); } else if (element instanceof Vendor) { annotateVendor((Vendor)element, holder); } else if (element instanceof ProductDescriptor) { annotateProductDescriptor((ProductDescriptor)element, holder); } else if (element instanceof IdeaVersion) { annotateIdeaVersion((IdeaVersion)element, holder); } else if (element instanceof Dependency) { annotateDependency((Dependency)element, holder); } else if (element instanceof DependencyDescriptor) { annotateDependencyDescriptor((DependencyDescriptor)element, holder); } else if (element instanceof ContentDescriptor) { annotateContentDescriptor((ContentDescriptor)element, holder); } else if (element instanceof Extensions) { annotateExtensions((Extensions)element, holder); } else if (element instanceof Extensions.UnresolvedExtension) { annotateUnresolvedExtension((Extensions.UnresolvedExtension)element, holder); } else if (element instanceof AddToGroup) { annotateAddToGroup((AddToGroup)element, holder); } else if (element instanceof Action) { annotateAction((Action)element, holder, componentModuleRegistrationChecker); } else if (element instanceof Synonym) { annotateSynonym((Synonym)element, holder); } else if (element instanceof Group) { annotateGroup((Group)element, holder); } else if (element instanceof Component) { annotateComponent((Component)element, holder, componentModuleRegistrationChecker); if (element instanceof Component.Project) { annotateProjectComponent((Component.Project)element, holder); } } else //noinspection deprecation if (element instanceof Helpset) { highlightRedundant(element, DevKitBundle.message("inspections.plugin.xml.deprecated.helpset"), holder); } else if (element instanceof Listeners) { annotateListeners((Listeners)element, holder); } else if (element instanceof Listener) { annotateListener((Listener)element, holder); } if (element instanceof GenericDomValue<?> domValue) { if (domValue.getConverter() instanceof PluginPsiClassConverter) { @SuppressWarnings("unchecked") GenericDomValue<PsiClass> psiClassDomValue = (GenericDomValue<PsiClass>)element; annotatePsiClassValue(psiClassDomValue, holder); } } }