@Override
  public @NotNull DataIndexer<String, Integer, FileContent> getIndexer() {
    return new DataIndexer<>() {
      @Override
      public @NotNull Map<String, Integer> map(@NotNull FileContent inputData) {
        Map<String, Integer> result = new HashMap<>();
        inputData
          .getPsiFile()
          .getViewProvider()
          .getAllFiles()
          .forEach(root -> processPsiFile(result, root));
        return result;
      }

      private void processPsiFile(Map<String, Integer> result, PsiFile file) {
        if (file instanceof HtmlCompatibleFile) {
          new XmlRecursiveElementWalkingVisitor() {
            @Override
            public void visitXmlAttribute(@NotNull XmlAttribute attribute) {
              super.visitXmlAttribute(attribute);
              if ("id".equals(attribute.getName())) {
                String value = attribute.getValue();
                XmlAttributeValue valueElement = attribute.getValueElement();
                if (valueElement != null && StringUtil.isNotEmpty(value)) {
                  result.put(value, valueElement.getTextRange().getStartOffset() + attribute.getValueTextRange().getStartOffset());
                }
              }
            }
          }.visitFile(file);
        }
      }
    };
  }
@Override
  public @NotNull DataIndexer<String, Integer, FileContent> getIndexer()