public void execute(final @Nullable Computable<Boolean> autoLoadDecision) {
    Runnable operation = () -> {
      boolean savedSuccessfully = ProgressManager.getInstance().computeInNonCancelableSection(() -> save());
      LOG.debug("save result: " + savedSuccessfully);
      if (savedSuccessfully) {
        try {
          LOG.debug("running operation");
          myOperation.run();
          LOG.debug("operation completed.");
        }
        finally {
          if (autoLoadDecision == null || autoLoadDecision.compute()) {
            LOG.debug("loading");
            ProgressManager.getInstance().executeNonCancelableSection(() -> load());
          }
          else {
            mySaver.notifyLocalChangesAreNotRestored();
          }
        }
      }
      LOG.debug("finished.");
    };

    new GitFreezingProcess(myProject, myOperationTitle, operation).execute();
  }
public void execute(final @Nullable Computable<Boolean> autoLoadDecision)