@Override
    protected @NotNull List<@NotNull TextRange> getSpellcheckOuterContentRanges(@NotNull T element) {
      List<TextRange> result = new SmartList<>(super.getSpellcheckOuterContentRanges(element));
      element.acceptChildren(new XmlElementVisitor() {
        @Override
        public void visitElement(@NotNull PsiElement element) {
          if (element.getNode().getElementType() == XmlElementType.XML_CDATA) {
            element.acceptChildren(this);
          }
          else if (!(element instanceof LeafPsiElement)
                   || !isContentToken(element.getNode().getElementType())) {
            result.add(element.getTextRangeInParent());
          }
        }
      });
      return result;
    }
@Override
    protected @NotNull List<@NotNull TextRange> getSpellcheckOuterContentRanges(@NotNull T element)