public static PairsRaceColor ToLaneColor(this PairsRaceColors colors, Lane lane)
        {
            switch (colors)
            {
            case PairsRaceColors.WhiteRed:
                return(lane == Lane.Inner ? PairsRaceColor.White : PairsRaceColor.Red);

            case PairsRaceColors.YellowBlue:
                return(lane == Lane.Inner ? PairsRaceColor.Yellow : PairsRaceColor.Blue);

            default:
                throw new ArgumentOutOfRangeException(nameof(colors));
            }
        }
        public static bool HasRaceColor(this PairsRaceColors colors, PairsRaceColor raceColor)
        {
            switch (colors)
            {
            case PairsRaceColors.WhiteRed:
                return(raceColor == PairsRaceColor.White || raceColor == PairsRaceColor.Red);

            case PairsRaceColors.YellowBlue:
                return(raceColor == PairsRaceColor.Yellow || raceColor == PairsRaceColor.Blue);

            default:
                throw new ArgumentOutOfRangeException(nameof(colors));
            }
        }
        public static IEnumerable <PairsRaceColor> GetRaceColors(this PairsRaceColors colors)
        {
            switch (colors)
            {
            case PairsRaceColors.WhiteRed:
                return(new[] { PairsRaceColor.White, PairsRaceColor.Red });

            case PairsRaceColors.YellowBlue:
                return(new[] { PairsRaceColor.Yellow, PairsRaceColor.Blue });

            default:
                throw new ArgumentOutOfRangeException(nameof(colors));
            }
        }
        public static string ToShortString(this PairsRaceColors colors)
        {
            switch (colors)
            {
            case PairsRaceColors.WhiteRed:
                return("WhRd");

            case PairsRaceColors.YellowBlue:
                return("YwBl");

            default:
                throw new ArgumentOutOfRangeException(nameof(colors));
            }
        }