public void Unload()
        {
            Log.Info(Log.LogSource.PoxDB, "Database.Unload() called");
            if (!ready)
            {
                return;
            }
            // todo: what if it is loading?

            Champions.Clear();
            Abilities.Clear();
            Abilities_similar.Clear();
            Spells.Clear();
            Relics.Clear();
            Equipments.Clear();

            Factions.Clear();
            Races.Clear();
            Classes.Clear();
            Rarities.Clear();
            Expansions.Clear();
            AbilityNames.Clear();

            ready = false;
        }
        private void CreateChampionIndex(Progression progression, StringVersion gameVersion, string staticResourceRootDirectory)
        {
            progression.StartNextStep(LoLStaticResourceCacheResources.CreateChampionIndexProgressStepDescription);
            Champions.Clear();
            ChampionNameToIdIndex.Clear();

            var championCollectionFile     = Path.Combine(staticResourceRootDirectory, gameVersion.ToString(), "data", "en_US", "champion.json");
            var championCollectionFileText = File.ReadAllText(championCollectionFile);

            var championCollection   = JObject.Parse(championCollectionFileText);
            var numberOfChampions    = championCollection["data"] !.Children().Count();
            var currentChampionIndex = 0;

            foreach (var championJson in championCollection["data"] !.Children())
            {
                progression.CurrentStepProgress = currentChampionIndex++ / (double)numberOfChampions;

                var champion = ToChampion(championJson.First !, gameVersion, staticResourceRootDirectory);
                if (!Champions.TryAdd(champion.Id, champion))
                {
                    throw new Exception($"The champion id {champion.Id} has been defined multiple times!");
                }

                if (!ChampionNameToIdIndex.TryAdd(champion.Name, champion.Id))
                {
                    throw new Exception($"The champion name {champion.Name} has been defined multiple times!");
                }
            }
        }