public override void Read(byte[] bytes)
    {
        PacketReader reader = new PacketReader(bytes);

        this.Id = BitConverter.ToUInt16(reader.GetBytesCapped(15));

        if (reader.GetBit())
        {
            this.Flag = (LatentEventFlag)reader.GetByte();
            if (this.Flag == LatentEventFlag.Head)
            {
                this.Header = new LatentEventHeader()
                {
                    Category      = (LatentEventCategory)reader.GetUint16(),
                    FinalSize     = reader.GetUint32(),
                    Rate          = reader.GetUint32(),
                    ResourceNetId = reader.GetUint16()
                }
            }
            ;
        }

        reader.AlignToByteBoundary();
        var size = reader.GetUint16();

        this.Data = reader.GetBytes(size);
    }
}