public ValuePacket ReadValue(bool includeVersion)
        {
            var status = m_parser.ReadStatus();

            if (status == ResponseStatus.Value)
            {
                var key     = m_parser.ReadKey();
                var flags   = m_parser.ReadFlags();
                var length  = m_parser.ReadLength();
                var version = includeVersion ? m_parser.ReadVersion() : 0;
                var value   = m_parser.ReadValue(length);

                return(new ValuePacket()
                {
                    Flags = flags,
                    Key = key,
                    Value = value,
                    Version = version
                });
            }

            if (status != ResponseStatus.NoError && status != ResponseStatus.KeyNotFound)
            {
                throw new InvalidOperationException();
            }

            return(null);
        }