public void Serialize(BinaryWriter writer)
 {
     writer.Write(_blocks.Count());
     foreach (var block in _blocks)
     {
         var blockPayload = new SingleStateBlockPayload(block);
         blockPayload.Serialize(writer);
     }
 }
        // Using the SingleStateBlockPayload
        public void Deserialize(BinaryReader reader)
        {
            var deserializedBlocks = new List <Block>();
            var count = reader.ReadInt32();

            for (int i = 0; i < count; i++)
            {
                var blockPayload = new SingleStateBlockPayload();
                blockPayload.Deserialize(reader);
                deserializedBlocks.Add(blockPayload.Block);
            }
            _blocks = deserializedBlocks;
        }