@Override
  public void executeWriteAction(@NotNull Editor editor, @NotNull Caret caret, DataContext dataContext) {
    final Project project = editor.getProject();
    assert project != null;
    final Document document = editor.getDocument();
    final PsiFile file = getPsiFile(project, editor);

    final MoverWrapper mover = getSuitableMover(editor, file);
    if (mover != null && mover.getInfo().toMove2 != null) {
      LineRange range = mover.getInfo().toMove;
      if ((range.startLine > 0 || isDown) && (range.endLine < document.getLineCount() || !isDown)) {
        mover.move(editor, file);
      }
    }
  }
@Override
  public void executeWriteAction(@NotNull Editor editor, @NotNull Caret caret, DataContext dataContext)