public CollectionModelPackage(IDocumentDatabase database, CollectionModel model, CollectionModelSettings settings) { Verify.IsNotNull(nameof(database), database); Verify.IsNotNull(nameof(model), model); Verify.IsNotNull(nameof(settings), settings); Verify.IsValid(nameof(model), model); Database = database; Model = model; Settings = settings; StateManagerBuilder builder = new StateManagerBuilder(); if (Settings.Remove || Settings.ReCreate) { builder.Add(new RemoveCollectionState(this)); } if (!Settings.Remove) { builder.Add(new CreateCollectionState(this)); builder.Add(new RemoveIndexesNotInSource(this)); foreach (var item in Model.Indexes ?? Enumerable.Empty <CollectionIndex>()) { builder.Add(new CreateIndexState(this, item)); } } _stateManager = builder.Build(); }