private void SimulateAssetValueChanges()
        {
            var notificationSubscriptions = SubscriptionsManager.Subscriptions;

            var assets = _exchangeRatesProvider.GetAssets().GetAwaiter().GetResult().ToArray();
            var rnd    = new Random();
            var changedAssetsAmount = rnd.Next(assets.Length);

            for (var i = 0; i < changedAssetsAmount; i++)
            {
                var randomAssetInd = rnd.Next(assets.Length);
                var randomAsset    = assets[randomAssetInd];
                var assetValue     = _exchangeRatesProvider.GetAssetValue(randomAsset).GetAwaiter().GetResult();

                var matchedConditions = notificationSubscriptions.Where(ns =>
                                                                        ns.Predicate(assetValue) &&
                                                                        ns.Asset.Equals(randomAsset, StringComparison.InvariantCultureIgnoreCase))
                                        .ToArray();

                foreach (var matchedCondition in matchedConditions)
                {
                    AssetValueChangedEvent?.Invoke(this, new AssetValueChangedEventArgs
                    {
                        Asset  = matchedCondition.Asset,
                        ChatId = matchedCondition.ChatId,
                        Value  = assetValue
                    });
                }

                foreach (var cond in matchedConditions)
                {
                    _subscriptionsManager.Unsubscribe(cond.Asset, cond.ChatId, cond.Predicate);
                }
            }
        }