public virtual bool Populate(byte[] buffer, int offset)
{
length = BitConverter.ToUInt16(buffer, offset);
if (length > ushort.MaxValue - this.size)
return false;
CRC = BitConverter.ToUInt32(buffer, 2 + offset);
buffer[2 + offset] = 0;
buffer[3 + offset] = 0;
buffer[4 + offset] = 0;
buffer[5 + offset] = 0;
return true;
}