public Chunk Deserialize()
        {
            var chunk = new Chunk(this.Position);

            for (int i = 0; i < this.Cells.Length; i++) {
                if (this.Cells[i] != null) {
                    var cellPos = this.Position + Chunk.ConvertIndexToRelPosition(i);

                    SerializedCellDefinition.Deserialize(cellPos, chunk, this.Cells[i]);
                }
            }

            return chunk;
        }
        public static SerializedChunk Serialize(Chunk chunk)
        {
            if (chunk == null) {
                return null;
            }

            var cells = chunk.GetAllCells();
            var serializedChunk = new SerializedChunk();

            serializedChunk.Position = chunk.Bounds.Position.ToIntVector3();
            serializedChunk.Cells = new SerializedCellDefinition[cells.Length];

            for (int i = 0; i < cells.Length; i++) {
                serializedChunk.Cells[i] = SerializedCellDefinition.Serialize(cells[i]);
            }

            return serializedChunk;
        }