@Override
  public void applyFix(@NotNull Project project, @NotNull ProblemDescriptor descriptor) {
    DomElement element = DomUtil.getDomElement(descriptor.getPsiElement());
    if (!(element instanceof ExtensionPoint extensionPoint)) {
      return;
    }
    List<PsiField> fields = extensionPoint.collectMissingWithTags();
    PsiElement navTarget = null;
    for (PsiField field : fields) {
      With with = extensionPoint.addWith();
      String tagName = ExtensionPointPropertyNameConverter.getAnnotationValue(field, Tag.class);
      if (tagName != null) {
        with.getTag().setStringValue(tagName);
      }
      else {
        String attributeName = ExtensionPointPropertyNameConverter.getAnnotationValue(field, Attribute.class);
        if (attributeName == null) {
          attributeName = field.getName();
        }
        if ("forClass".equals(attributeName)) {
          continue;
        }
        with.getAttribute().setStringValue(attributeName);
      }
      String epName = extensionPoint.getName().getStringValue();
      String className = "";
      if (epName != null) {
        int pos = epName.lastIndexOf('.');
        epName = StringUtil.capitalize(pos >= 0 ? epName.substring(pos + 1) : epName);
        PsiClass[] classesByName = PsiShortNamesCache.getInstance(project).getClassesByName(epName,
                                                                                            ProjectScope.getAllScope(project));
        if (classesByName.length == 1) {
          className = classesByName[0].getQualifiedName();
        }
      }
      with.getImplements().setStringValue(className);
      if (navTarget == null) {
        navTarget = with.getImplements().getXmlAttributeValue();
      }
    }
    if (navTarget != null && !IntentionPreviewUtils.isPreviewElement(descriptor.getPsiElement())) {
      PsiNavigateUtil.navigate(navTarget);
    }
  }
@Override
  public void applyFix(@NotNull Project project, @NotNull ProblemDescriptor descriptor)