public async Task CloseGate(uint Offset, CancellationToken token)
        {
            // Navigate through dialog with Dodo to close the gate, then inject empty dodo bytes
            await Task.Delay(0_500, token).ConfigureAwait(false);

            var Hold = SwitchCommand.Hold(SwitchButton.L);
            await Connection.SendAsync(Hold, token).ConfigureAwait(false);

            await Task.Delay(0_700, token).ConfigureAwait(false);

            await BotRunner.Click(SwitchButton.A, 3_000, token).ConfigureAwait(false);

            await BotRunner.Click(SwitchButton.A, 1_000, token).ConfigureAwait(false);

            await BotRunner.Click(SwitchButton.A, 2_000, token).ConfigureAwait(false);

            await BotRunner.Click(SwitchButton.A, 3_000, token).ConfigureAwait(false);

            for (int i = 0; i < 5; ++i)
            {
                await BotRunner.Click(SwitchButton.B, 1_000, token).ConfigureAwait(false);
            }

            await Task.Delay(0_500, token).ConfigureAwait(false);

            var Release = SwitchCommand.Release(SwitchButton.L);
            await Connection.SendAsync(Release, token).ConfigureAwait(false);

            await Connection.WriteBytesAsync(new byte[5], Offset, token).ConfigureAwait(false);

            DodoCode = string.Empty;
        }
        public async Task <InjectionResult> Write(Item[] items, CancellationToken token)
        {
            var(valid, data) = await ReadValidateAsync(token);

            if (!valid)
            {
                return(InjectionResult.FailValidate);
            }

            var orig = (byte[])data.Clone();

            var pocket2 = items.Take(20).ToArray();
            var pocket1 = items.Skip(20).ToArray();
            var p1      = Item.SetArray(pocket1);
            var p2      = Item.SetArray(pocket2);

            p1.CopyTo(data, 0);
            p2.CopyTo(data, pocket + 0x18);

            if (data.SequenceEqual(orig))
            {
                return(InjectionResult.Same);
            }

            await Bot.WriteBytesAsync(data, DataOffset, token);

            return(InjectionResult.Success);
        }