public void ReadTable(IDictionary <string, object> table)
        {
            uint tableLength = _reader.ReadUInt32();

            if (tableLength == 0)
            {
                return;
            }

            var marker = new RingBufferPositionMarker(_reader._ringBufferStream);

            while (marker.LengthRead < tableLength)
            {
                string key   = ReadShortStr(internIt: false);
                object value = ReadFieldValue();
                table[key] = value;
            }
        }
        public IDictionary <string, object> ReadTable()
        {
            // unbounded allocation! bad
            var table = new Dictionary <string, object>(capacity: 11);

            uint tableLength = _reader.ReadUInt32();

            if (tableLength == 0)
            {
                return(table);
            }

            var marker = new RingBufferPositionMarker(_reader._ringBufferStream._ringBuffer);

            while (marker.LengthRead < tableLength)
            {
                string key   = ReadShortStr();
                object value = ReadFieldValue();
                table[key] = value;
            }

            return(table);
        }