public void executeAsynchronously(HgCommandResultHandler resultHandler) throws HgCommandException {
    if (StringUtil.isEmptyOrSpaces(tagName)) {
      throw new HgCommandException("tag name is empty");
    }
    List<String> arguments = new ArrayList<>();
    arguments.add(tagName);
    if (!StringUtil.isEmptyOrSpaces(revisionNumberOrHash)) {
      arguments.add("--rev");
      arguments.add(revisionNumberOrHash);
    }
    BackgroundTaskUtil.executeOnPooledThread(HgDisposable.getInstance(project), () -> {
      HgCommandResult result = new HgCommandExecutor(project).executeInCurrentThread(repo, "tag", arguments);
      if (resultHandler != null) {
        resultHandler.process(result);
      }
    });
    if (!project.isDisposed()) {
      HgRepositoryManager manager = HgUtil.getRepositoryManager(project);
      manager.updateRepository(repo);
    }
  }
public void executeAsynchronously(HgCommandResultHandler resultHandler)