PluginPlatformInfo (@NotNull DomElement pluginXmlDomElement) { Module module = pluginXmlDomElement.getModule(); if (module == null) { return UNRESOLVED_INSTANCE; } boolean isDevkitModule = PluginModuleType.isPluginModuleOrDependency(module); if (!isDevkitModule) { return forModule(module); } IdeaPlugin plugin = DomUtil.getParentOfType(pluginXmlDomElement, IdeaPlugin.class, true); assert plugin != null; if (!plugin.hasRealPluginId()) { final XmlFile mainPluginXml = PluginModuleType.getPluginXml(module); if (mainPluginXml == null) { return new PluginPlatformInfo(PlatformResolveStatus.DEVKIT_NO_MAIN, null, null); } plugin = DescriptorUtil.getIdeaPlugin(mainPluginXml); assert plugin != null; } final GenericAttributeValue<BuildNumber> sinceBuild = plugin.getIdeaVersion().getSinceBuild(); if (!DomUtil.hasXml(sinceBuild) || sinceBuild.getValue() == null) { return new PluginPlatformInfo(PlatformResolveStatus.DEVKIT_NO_SINCE_BUILD, plugin, null); } return new PluginPlatformInfo(PlatformResolveStatus.DEVKIT, plugin, sinceBuild.getValue()); }