public override void RemoveScenario(ScenarioBase scenario)
        {
            var linkedScenarios = _scenarios.Except(new[] { scenario })
                                  .Where(x => x.GetAllActionsFlat()
                                         .Any(z => z is IScenariosAccess scenarioAccessObj && scenarioAccessObj.TargetScenarioId != null && scenarioAccessObj.TargetScenarioId.Equals(scenario.Id))).ToArray();

            if (linkedScenarios.Any())
            {
                throw new InvalidOperationException("Невозможно удалить сценарий, так как следующие сценарии ссылаются на него: "
                                                    + linkedScenarios.Select(x => x.Name).Aggregate((z, y) => z + "; " + y));
            }

            var linkedTriggers = _triggers
                                 .Where(x => (x.TargetScenarioId != null && x.TargetScenarioId.Equals(scenario.Id)) || x.GetAllActionsFlat()
                                        .Any(z => z is IScenariosAccess scenarioAccessObj && scenarioAccessObj.TargetScenarioId.Equals(scenario.Id))).ToArray();

            if (linkedScenarios.Any())
            {
                throw new InvalidOperationException("Невозможно удалить сценарий, так как следующие триггеры ссылаются на него: "
                                                    + linkedTriggers.Select(x => x.Name).Aggregate((z, y) => z + "; " + y));
            }

            scenario.Dispose();
            _scenariosIds.Remove(scenario.Id);
            _scenarios.RemoveAll(x => x.Id.Equals(scenario.Id));
            RaiseOnScenarioRemoved(scenario);
            _dataManager.Set(ScenariosIdsKey, _scenariosIds);
            _dataManager.Clear(scenario.Id);
        }