@Override
  public void push(@NotNull Map<HgRepository, PushSpec<HgPushSource, HgTarget>> pushSpecs,
                   @Nullable VcsPushOptionValue vcsPushOptionValue, boolean force) {
    for (Map.Entry<HgRepository, PushSpec<HgPushSource, HgTarget>> entry : pushSpecs.entrySet()) {
      HgRepository repository = entry.getKey();
      PushSpec<HgPushSource, HgTarget> hgSpec = entry.getValue();
      HgTarget destination = hgSpec.getTarget();
      HgPushSource source = hgSpec.getSource();
      Project project = repository.getProject();
      final HgPushCommand pushCommand = new HgPushCommand(project, repository.getRoot(), destination.myTarget);
      pushCommand.setIsNewBranch(true); // set always true, because it just allow mercurial to create a new one if needed
      pushCommand.setForce(force);
      String branchName = source.getBranch();
      if (branchName.equals(repository.getCurrentBookmark())) {
        if (vcsPushOptionValue == HgVcsPushOptionValue.Current) {
          pushCommand.setBookmarkName(branchName);
        }
        else {
          pushCommand.setRevision(branchName);
        }
      }
      else {
        pushCommand.setBranchName(branchName);
      }
      pushSynchronously(project, pushCommand);
    }
  }
@Override
  public void push(@NotNull Map<HgRepository, PushSpec<HgPushSource, HgTarget>> pushSpecs,
                   @Nullable VcsPushOptionValue vcsPushOptionValue, boolean force)