public ReadResults Parse(IStringReader reader, DispatcherResources resources, out GameType result)
        {
            result = default;
            int         start       = reader.GetCursor();
            ReadResults readResults = reader.ReadUnquotedString(out string gamemode);

            if (!readResults.Successful)
            {
                return(readResults);
            }
            if (!resources.Gamemodes.TryGet(gamemode, out result))
            {
                reader.SetCursor(start);
                return(ReadResults.Failure(CommandError.UnknownGamemode(gamemode).WithContext(reader)));
            }

            return(ReadResults.Success());
        }
        private static ReadResults ReadGamemode(EntitySelectorParser parser, IStringReader reader, DispatcherResources resources)
        {
            int         start       = reader.GetCursor();
            ReadResults readResults = reader.ReadUnquotedString(out string gamemode);

            if (!readResults.Successful)
            {
                return(readResults);
            }

            if (resources.Gamemodes.TryGet(gamemode, out _))
            {
                parser.AddArgument(new ParsedArgument <Literal>(new Literal(gamemode), false));
                return(ReadResults.Success());
            }
            else
            {
                reader.SetCursor(start);
                return(ReadResults.Failure(CommandError.UnknownGamemode(gamemode).WithContext(reader)));
            }
        }