public async Task <SAV8SWSH> IdentifyTrainer(CancellationToken token)
        {
            // Check title so we can warn if mode is incorrect.
            string title = await SwitchConnection.GetTitleID(token).ConfigureAwait(false);

            if (title is not(SwordID or ShieldID))
            {
                throw new Exception($"{title} is not a valid SWSH title. Is your mode correct?");
            }

            Log("Grabbing trainer data of host console...");
            var sav = await GetFakeTrainerSAV(token).ConfigureAwait(false);

            InitSaveData(sav);

            if (!IsValidTrainerData())
            {
                throw new Exception("Trainer data is not valid. Refer to the SysBot.NET wiki for bad or no trainer data.");
            }
            if (await GetTextSpeed(token).ConfigureAwait(false) < TextSpeedOption.Fast)
            {
                throw new Exception("Text speed should be set to FAST. Fix this for correct operation.");
            }

            return(sav);
        }
        public async Task <SAV8BS> IdentifyTrainer(CancellationToken token)
        {
            // pull title so we know which set of offsets to use
            string title = await SwitchConnection.GetTitleID(token).ConfigureAwait(false);

            Offsets = title switch
            {
                BrilliantDiamondID => new PokeDataOffsetsBS_BD(),
                ShiningPearlID => new PokeDataOffsetsBS_SP(),
                _ => throw new Exception($"{title} is not a valid Pokémon BDSP title. Is your mode correct?"),
            };

            var sav = await GetFakeTrainerSAV(token).ConfigureAwait(false);

            InitSaveData(sav);

            if (!IsValidTrainerData())
            {
                throw new Exception("Trainer data is not valid. Refer to the SysBot.NET wiki for bad or no trainer data.");
            }
            if (await GetTextSpeed(token).ConfigureAwait(false) < TextSpeedOption.Fast)
            {
                throw new Exception("Text speed should be set to FAST. Fix this for correct operation.");
            }

            return(sav);
        }