@Override
    public void invoke(@NotNull Project project, Editor editor, PsiFile file, DataContext dataContext) {
        final int offset = editor.getCaretModel().getOffset();

        final XmlAttribute context = PsiTreeUtil.getContextOfType(file, XmlAttribute.class, true);
        if (context != null) {
            if (actionPerformedImpl(file, editor, context, offset)) {
                return;
            }
        }

        final String message = getErrorMessage(editor, file, context);
        final String nonNullMessage =
          message != null ? message : XPathBundle.message("dialog.message.not.available.in.current.context", getRefactoringName());
        CommonRefactoringUtil.showErrorHint(editor.getProject(), editor,
                                            XPathBundle.message("dialog.message.cannot.perform.refactoring", nonNullMessage),
                                            XPathBundle.message("dialog.title.xslt", getRefactoringName()), null);
    }
@Override
    public void invoke(@NotNull Project project, Editor editor, PsiFile file, DataContext dataContext)