void CreateNewGameBoardCache(GameBoardComponent gameBoard) { var grid = new ICollection <PoolEntity> [gameBoard.columns, gameBoard.rows]; var entities = pool.GetEntities(Matcher <PoolEntity> .AllOf( PoolMatcher.GameBoardElement, PoolMatcher.Position)); foreach (var e in entities) { var pos = e.position; grid.Add(pos.x, pos.y, e); } pool.ReplaceGameBoardCache(grid); }