public void Apply(LevelDescription levelDescription, EntityManager entityManager)
        {
            var entities = entityManager.GetAllEntities();

            for (int i = 0; i < entities.Length; i++)
            {
                if (entityManager.HasComponent <Slot>(entities[i]))
                {
                    var slotPosition = entityManager.GetComponentData <SlotPosition>(entities[i]);
                    var x            = slotPosition.Value.x;
                    var y            = slotPosition.Value.y;
                    var position     = entityManager.GetComponentData <Position>(entities[i]).Value;
                    var slot         = entities[i];
                    entityManager.AddComponentData(slot, new PossibleNeighbours()
                    {
                        Value = FieldUtils.GetNeighbour(x, y, levelDescription.Width, levelDescription.Height)
                    });

                    var chipDescription = levelDescription.GetChipDescription(slotPosition.Value);
                    if (chipDescription.ChipType == ChipType.None)
                    {
                        continue;
                    }

                    var colorsCount = Mathf.Min(_chipsPrefabs.Length, levelDescription.ColorCount);
                    var color       = (chipDescription.Color == ChipColor.Random) ? (ChipColor)Random.Range(0, colorsCount) : chipDescription.Color;

                    var chip = CreateChip(entityManager, slot, position, color);
                    entityManager.AddComponentData(slot, new ChipReference()
                    {
                        Value = chip
                    });
                }
            }
            entities.Dispose();
        }