protected override void Dispose(bool isDisposing)
        {
            if (this.isDisposed)
            {
                return;
            }
            base.Dispose(isDisposing);

            if (AzureIndexClient != null)
            {
                AzureIndexClient.Dispose();
            }

            if (AzureSearchClient != null)
            {
                AzureSearchClient.Dispose();
            }

            TypeActionHelper.Call <IDisposable>((Action <IDisposable>)(d => d.Dispose()), this.strategies);
            TypeActionHelper.Call <IDisposable>((Action <IDisposable>)(d => d.Dispose()), this.PropertyStore);
            TypeActionHelper.Call <IDisposable>((Action <IDisposable>)(d => d.Dispose()), this.ShardFactory);
            TypeActionHelper.Call <IDisposable>((Action <IDisposable>)(d => d.Dispose()), this.CommitPolicyExecutor);
        }