@Override
  public void execute(GitFlowConfiguration configuration, Git git, JGitFlowCommand gitFlowCommand)
      throws JGitFlowExtensionException {
    try {
      JGitFlow flow = jGitFlowProvider.gitFlow();
      ReleaseContext ctx = contextProvider.getContext();

      String originalBranchName = branchHelper.getCurrentBranchName();

      // check out develop and reload the reactor
      SessionAndProjects sessionAndProjects =
          checkoutAndGetProjects.run(flow.getDevelopBranchName());
      List<MavenProject> developProjects = sessionAndProjects.getProjects();

      String developLabel =
          labelProvider.getNextVersionLabel(
              VersionType.DEVELOPMENT, ProjectCacheKey.DEVELOP_BRANCH, developProjects);

      pomUpdater.updatePomsWithNextDevelopmentVersion(
          ProjectCacheKey.DEVELOP_BRANCH, developProjects);

      projectHelper.commitAllPoms(
          flow.git(),
          developProjects,
          ctx.getScmCommentPrefix()
              + "updating poms for "
              + developLabel
              + " development"
              + ctx.getScmCommentSuffix());

      flow.git().checkout().setName(originalBranchName).call();

    } catch (Exception e) {
      throw new JGitFlowExtensionException(
          "Error updating develop poms to next development version", e);
    }
  }