public void UpdateConwaysNoLoopedWorld(int width, int height, int batchCount)
        {
            NativeArray <int> cellsArray = default;

            Measure.Method(() =>
            {
                var job = new UpdateAreaCells_ShiftNeighborsCountJob
                {
                    CellStates = cellsArray
                }.Schedule(cellsArray.Length, batchCount);
                var statesInt4 = cellsArray.Reinterpret <int4>(UnsafeUtility.SizeOf <int>());
                job            = new SetHorizontalSidesInAreasJob
                {
                    Width      = width / 4,
                    CellStates = statesInt4
                }.Schedule(height, 64, job);
                job = new SetVerticalSidesInAreasJob
                {
                    Width      = width / 4,
                    CellStates = statesInt4
                }.Schedule(width / 4, 64, job);
                job.Complete();
            })
            .SetUp(() =>
            {
                cellsArray = new NativeArray <int>(width * height, Allocator.TempJob, NativeArrayOptions.UninitializedMemory);
            })
            .CleanUp(() =>
            {
                cellsArray.Dispose();
            })
            .Run();
        }
        public void UpdateCellsStateInAreas_ShiftNeighborsCount(int width, int height, int batchCount)
        {
            NativeArray <int> cellsArray = default;

            Measure.Method(() =>
            {
                var job = new UpdateAreaCells_ShiftNeighborsCountJob
                {
                    CellStates = cellsArray
                }.Schedule(cellsArray.Length, batchCount);
                job.Complete();
            })
            .SetUp(() =>
            {
                cellsArray = new NativeArray <int>(width * height, Allocator.TempJob, NativeArrayOptions.UninitializedMemory);
            })
            .CleanUp(() =>
            {
                cellsArray.Dispose();
            })
            .Run();
        }