public OnlyOnceClientStoreMigrator(IClientStoreMigrator decorated, IClientStoreBaseliner baseliner, ISemaphoreFactory semaphoreFactory) { if (baseliner == null) { throw new ArgumentNullException(nameof(baseliner)); } _decorated = decorated ?? throw new ArgumentNullException(nameof(decorated)); _semaphoreFactory = semaphoreFactory ?? throw new ArgumentNullException(nameof(semaphoreFactory)); _semaphore = _semaphoreFactory.CreateLock(); _lazyBaseline = new Lazy <Task <int?> >(baseliner.GetBaseline, LazyThreadSafetyMode.PublicationOnly); _runResult = null; }