@Override
  public void invoke(@NotNull Project project, Editor editor, PsiFile file) throws IncorrectOperationException {
    PsiElement cdata = getCData(editor, file);
    if (cdata == null) return;

    ASTNode node = cdata.getNode();
    List<ASTNode> cdatas = new ArrayList<>();
    ASTNode curr = node.getTreePrev();
    while (curr != null && curr.getElementType() == XmlElementType.XML_CDATA) {
      cdatas.add(0, curr);
      curr = curr.getTreePrev();
    }
    cdatas.add(node);
    curr = node.getTreeNext();
    while (curr != null && curr.getElementType() == XmlElementType.XML_CDATA) {
      cdatas.add(curr);
      curr = curr.getTreeNext();
    }
    StringBuilder text = new StringBuilder();
    for (ASTNode astNode : cdatas) {
      ASTNode textNode = astNode.getFirstChildNode().getTreeNext();
      if (textNode != null && textNode.getElementType() != XmlTokenType.XML_CDATA_END) text.append(StringUtil.escapeXmlEntities(textNode.getText()));
    }

    editor.getDocument().replaceString(cdatas.get(0).getStartOffset(),
                                       cdatas.get(cdatas.size() - 1).getTextRange().getEndOffset(), text.toString());
  }
@Override
  public void invoke(@NotNull Project project, Editor editor, PsiFile file)