@Event
	public void spawnBee() {
		if (hasTooMuchInfectedBees()) {
			infoWithPosition("I am collapsed!");
			_infected = true;
			return;
		}
		if (_populationCapacity > _currentPopulation) {
			boolean newBeeIsWorker = _currentWorkerBeePopulation < _currentPopulation * WORKER_BEE_PERCENTAGE;
			Bee newBee = _simulation.beeFactory().createBee(this, newBeeIsWorker);
			register(newBee, getName() + "." + (newBeeIsWorker ? "WorkerBee" : "HiveBee") + _beeCounter);
			_simulation.environment().addBee(newBee);
			if (newBeeIsWorker) {
				_currentWorkerBeePopulation++;
			}
			_beeCounter++;
			_currentPopulation++;
		}
		schedule("spawnBee", EGG_SPAWN_RATE);
	}