public IPlayerProfileData this[string name]
            {
                get
                {
                    var profile = archive.ReadPlayerProfile(name);

                    return(new PlayerProfileData(archive, profile));
                }
            }
        public static InMemoryDatabase ReadFromArchive(IGameDataArchive archive)
        {
            var gameData = CreateEmpty();

            foreach (var playerName in archive.PlayerNames)
            {
                var profile = archive.ReadPlayerProfile(playerName);
                gameData.Players.AddProfile(profile);
            }

            foreach (var uid in archive.PuzzleLibraryUIDs)
            {
                var entry = archive.ReadPuzzleLibraryEntry(uid);
                gameData.Puzzles.Add(entry);
            }

            return(gameData);
        }