@Override
  protected void doExecute(@NotNull Editor editor, @Nullable Caret caret, DataContext dataContext) {
    Runnable callOriginal = () -> {
      if (myOriginalHandler != null) {
        myOriginalHandler.execute(editor, caret, dataContext);
      }
    };
    LookupImpl lookup = (LookupImpl)LookupManager.getActiveLookup(editor);
    if (lookup != null &&
        lookup.getLookupStart() == lookup.getLookupOriginalStart() &&
        lookup.getLookupStart() == lookup.getTopLevelEditor().getCaretModel().getOffset()) {
      lookup.performGuardedChange(callOriginal);
      lookup.moveToCaretPosition();
    } else {
      callOriginal.run();
    }
  }
@Override
  protected void doExecute(@NotNull Editor editor, @Nullable Caret caret, DataContext dataContext)