public GitVersionCalculateTool(ILog log, INextVersionCalculator nextVersionCalculator,
                                   IVariableProvider variableProvider, IGitPreparer gitPreparer,
                                   IGitVersionCache gitVersionCache, IGitVersionCacheKeyFactory cacheKeyFactory,
                                   IOptions <GitVersionOptions> options, Lazy <GitVersionContext> versionContext)
    {
        this.log = log.NotNull();

        this.nextVersionCalculator = nextVersionCalculator.NotNull();
        this.variableProvider      = variableProvider.NotNull();
        this.gitPreparer           = gitPreparer.NotNull();

        this.cacheKeyFactory = cacheKeyFactory.NotNull();
        this.gitVersionCache = gitVersionCache.NotNull();

        this.options        = options.NotNull();
        this.versionContext = versionContext.NotNull();
    }