/// <exception cref="CommandSyntaxException" />
        public override long Parse(IStringReader reader)
        {
            var start  = reader.Cursor;
            var result = reader.ReadLong();

            if (result < Minimum)
            {
                reader.Cursor = start;
                throw CommandSyntaxException.BuiltInExceptions.LongTooLow().CreateWithContext(reader, result, Minimum);
            }
            if (result > Maximum)
            {
                reader.Cursor = start;
                throw CommandSyntaxException.BuiltInExceptions.LongTooHigh().CreateWithContext(reader, result, Maximum);
            }
            return(result);
        }
        public ReadResults Parse(IStringReader reader, DispatcherResources resources, out long result)
        {
            int         start       = reader.GetCursor();
            ReadResults readResults = reader.ReadLong(out result);

            if (readResults.Successful)
            {
                if (result < Minimum)
                {
                    reader.SetCursor(start);
                    return(ReadResults.Failure(CommandError.LongTooLow(result, Minimum).WithContext(reader)));
                }
                if (result > Maximum)
                {
                    reader.SetCursor(start);
                    return(ReadResults.Failure(CommandError.LongTooHigh(result, Maximum).WithContext(reader)));
                }
            }

            return(readResults);
        }