public override Duration Deserialize(ushort protocolVersion, byte[] buffer, int offset, int length, IColumnInfo typeInfo)
        {
            var months      = (int)VintSerializer.ReadVInt(buffer, ref offset);
            var days        = (int)VintSerializer.ReadVInt(buffer, ref offset);
            var nanoseconds = VintSerializer.ReadVInt(buffer, ref offset);

            return(new Duration(months, days, nanoseconds));
        }
        public override byte[] Serialize(ushort protocolVersion, Duration value)
        {
            var lengthMonths = VintSerializer.WriteVInt(value.Months, EncodingBuffers.Value[0]);
            var lengthDays   = VintSerializer.WriteVInt(value.Days, EncodingBuffers.Value[1]);
            var lengthNanos  = VintSerializer.WriteVInt(value.Nanoseconds, EncodingBuffers.Value[2]);
            // Can be improved once the buffer pool is made available for serializers
            var buffer = new byte[lengthMonths + lengthDays + lengthNanos];
            var offset = 0;

            Buffer.BlockCopy(EncodingBuffers.Value[0], 0, buffer, offset, lengthMonths);
            offset += lengthMonths;
            Buffer.BlockCopy(EncodingBuffers.Value[1], 0, buffer, offset, lengthDays);
            offset += lengthDays;
            Buffer.BlockCopy(EncodingBuffers.Value[2], 0, buffer, offset, lengthNanos);
            return(buffer);
        }