private static Halves <T> Halves <T>(List <T> games)
        {
            var halves = new Halves <T>();

            halves.TopHalf.AddRange(games.GetRange(0, games.Count / 2));
            halves.BottomHalf.AddRange(games.GetRange(games.Count / 2, games.Count / 2));
            return(halves);
        }
        private static Halves <T> CrossHalves <T>(List <T> seededParticipants)
        {
            var halves = new Halves <T>();

            for (int i = 0; i < seededParticipants.Count; i += 2)
            {
                if (i % 4 == 0)
                {
                    halves.TopHalf.Add(seededParticipants[i]);
                    halves.BottomHalf.Add(seededParticipants[i + 1]);
                }
                else
                {
                    halves.BottomHalf.Add(seededParticipants[i]);
                    halves.TopHalf.Add(seededParticipants[i + 1]);
                }
            }
            return(halves);
        }