void (@NotNull Project project, @NotNull ProblemDescriptor descriptor) { PsiElement psiElement = descriptor.getPsiElement(); if (!(psiElement instanceof XmlTag xmlTag)) return; choosePropertiesFileAndExtract(project, Collections.singletonList(xmlTag), selection -> { PropertiesFile propertiesFile = findPropertiesFile(project, selection); if (propertiesFile != null) { WriteCommandAction.runWriteCommandAction( project, DevKitI18nBundle.message("inspections.plugin.xml.i18n.key.command.name"), null, () -> { XmlAttribute bundleAttribute = xmlTag.getAttribute("bundle"); String bundleQName = getBundleQName(project, propertiesFile); if (bundleAttribute == null || !bundleQName.equals(bundleAttribute.getValue())) { xmlTag.setAttribute("bundle", bundleQName); } String escapedId = StringUtil.defaultIfEmpty(StringUtil.toLowerCase(xmlTag.getAttributeValue("id")), "notification.id").replace(' ', '.'); String messageKey = "notification.group." + escapedId; xmlTag.setAttribute("key", messageKey); JavaI18nUtil.DEFAULT_PROPERTY_CREATION_HANDLER.createProperty(project, Collections.singletonList(propertiesFile), messageKey, "", new UExpression[0]); IProperty createdProperty = propertiesFile.findPropertyByKey(messageKey); if (createdProperty != null) { createdProperty.navigate(true); } }, psiElement.getContainingFile(), propertiesFile.getContainingFile()); } }); }