/// <summary>
 ///     Clones this dependency parameter object with one service replaced.
 /// </summary>
 /// <param name="migrationsCodeGeneratorSelector"> A replacement for the current dependency of this type. </param>
 /// <returns> A new parameter object with the given service replaced. </returns>
 public MigrationsScaffolderDependencies With([NotNull] IMigrationsCodeGeneratorSelector migrationsCodeGeneratorSelector)
 => new MigrationsScaffolderDependencies(
     CurrentContext,
     Model,
     MigrationsAssembly,
     MigrationsModelDiffer,
     MigrationsIdGenerator,
     migrationsCodeGeneratorSelector,
     HistoryRepository,
     OperationReporter,
     DatabaseProvider,
     SnapshotModelProcessor,
     Migrator);
        public MigrationsScaffolderDependencies(
            [NotNull] ICurrentDbContext currentContext,
            [NotNull] IModel model,
            [NotNull] IMigrationsAssembly migrationsAssembly,
            [NotNull] IMigrationsModelDiffer migrationsModelDiffer,
            [NotNull] IMigrationsIdGenerator migrationsIdGenerator,
            [NotNull] IMigrationsCodeGeneratorSelector migrationsCodeGeneratorSelector,
            [NotNull] IHistoryRepository historyRepository,
            [NotNull] IOperationReporter operationReporter,
            [NotNull] IDatabaseProvider databaseProvider,
            [NotNull] ISnapshotModelProcessor snapshotModelProcessor,
            [NotNull] IMigrator migrator)
        {
            Check.NotNull(currentContext, nameof(currentContext));
            Check.NotNull(model, nameof(model));
            Check.NotNull(migrationsAssembly, nameof(migrationsAssembly));
            Check.NotNull(migrationsModelDiffer, nameof(migrationsModelDiffer));
            Check.NotNull(migrationsIdGenerator, nameof(migrationsIdGenerator));
            Check.NotNull(migrationsCodeGeneratorSelector, nameof(migrationsCodeGeneratorSelector));
            Check.NotNull(historyRepository, nameof(historyRepository));
            Check.NotNull(operationReporter, nameof(operationReporter));
            Check.NotNull(databaseProvider, nameof(databaseProvider));
            Check.NotNull(snapshotModelProcessor, nameof(snapshotModelProcessor));
            Check.NotNull(migrator, nameof(migrator));

            CurrentContext                  = currentContext;
            Model                           = model;
            MigrationsAssembly              = migrationsAssembly;
            MigrationsModelDiffer           = migrationsModelDiffer;
            MigrationsIdGenerator           = migrationsIdGenerator;
            MigrationsCodeGeneratorSelector = migrationsCodeGeneratorSelector;
            HistoryRepository               = historyRepository;
            OperationReporter               = operationReporter;
            DatabaseProvider                = databaseProvider;
            SnapshotModelProcessor          = snapshotModelProcessor;
            Migrator                        = migrator;
        }