@Override
  public DomElementProblemDescriptor createProblem(final @NotNull DomElement domElement,
                                                   final HighlightSeverity highlightType,
                                                   @InspectionMessage String message,
                                                   final TextRange textRange,
                                                   final @NotNull LocalQuickFix @NotNull ... fixes) {
    return addProblem(new DomElementProblemDescriptorImpl(domElement, message, highlightType, textRange, null, fixes));
  }

  @Override
  public DomElementProblemDescriptor createProblem(@NotNull DomElement domElement,
                                                   ProblemHighlightType highlightType,
                                                   @InspectionMessage String message,
                                                   @Nullable TextRange textRange,
                                                   @NotNull LocalQuickFix @NotNull ... fixes) {
    return addProblem(new DomElementProblemDescriptorImpl(domElement, message, HighlightSeverity.ERROR, textRange, highlightType, fixes));
  }

  @Override
  public @NotNull DomElementResolveProblemDescriptor createResolveProblem(@NotNull GenericDomValue element, @NotNull PsiReference reference) {
    return addProblem(new DomElementResolveProblemDescriptorImpl(element, reference, getQuickFixes(element, reference)));
  }

  @Override
  public @NotNull AnnotationHolder getAnnotationHolder() {
    return myAnnotationHolder;
  }

  public final SmartList<Annotation> getAnnotations() {
    return myAnnotations;
  }

  @Override
  public int getSize() {
    return size();
  }

  private @NotNull LocalQuickFix @NotNull [] getQuickFixes(final GenericDomValue element, PsiReference reference) {
    if (!myOnTheFly) return LocalQuickFix.EMPTY_ARRAY;

    final List<LocalQuickFix> result = new SmartList<>();
    final Converter converter = WrappingConverter.getDeepestConverter(element.getConverter(), element);
    if (converter instanceof ResolvingConverter resolvingConverter) {
      ContainerUtil
        .addAll(result, resolvingConverter.getQuickFixes(ConvertContextFactory.createConvertContext(DomManagerImpl.getDomInvocationHandler(element))));
    }
    if (reference instanceof LocalQuickFixProvider) {
      final LocalQuickFix[] localQuickFixes = ((LocalQuickFixProvider)reference).getQuickFixes();
      if (localQuickFixes != null) {
        ContainerUtil.addAll(result, localQuickFixes);
      }
    }
    return result.isEmpty() ? LocalQuickFix.EMPTY_ARRAY : result.toArray(LocalQuickFix.EMPTY_ARRAY);
  }
@Override
  public DomElementProblemDescriptor createProblem(final @NotNull DomElement domElement,
                                                   final HighlightSeverity highlightType,
                                                   @InspectionMessage String message,
                                                   final TextRange textRange,
                                                   final @NotNull LocalQuickFix @NotNull ... fixes) {
    return addProblem(new DomElementProblemDescriptorImpl(domElement, message, highlightType, textRange, null, fixes));
  }

  @Override
  public DomElementProblemDescriptor createProblem(@NotNull DomElement domElement,
                                                   ProblemHighlightType highlightType,
                                                   @InspectionMessage String message,
                                                   @Nullable TextRange textRange,
                                                   @NotNull LocalQuickFix @NotNull ... fixes) {
    return addProblem(new DomElementProblemDescriptorImpl(domElement, message, HighlightSeverity.ERROR, textRange, highlightType, fixes));
  }

  @Override
  public @NotNull DomElementResolveProblemDescriptor createResolveProblem(@NotNull GenericDomValue element, @NotNull PsiReference reference) {
    return addProblem(new DomElementResolveProblemDescriptorImpl(element, reference, getQuickFixes(element, reference)));
  }

  @Override
  public @NotNull AnnotationHolder getAnnotationHolder() {
    return myAnnotationHolder;
  }

  public final SmartList<Annotation> getAnnotations() {
    return myAnnotations;
  }

  @Override
  public int getSize() {
    return size();
  }

  private @NotNull LocalQuickFix @NotNull [] getQuickFixes(final GenericDomValue element, PsiReference reference)