docs: protected void fireAgentSpawnedOutsideAgent(UUID spawningAgent, AgentContext context, Class<? extends Agent> agentClazz, List<Agent> agents,
  			Object... initializationParameters) {
  		// Notify the listeners on the spawn events (not restricted to a single agent)
  		for (final SpawnServiceListener l : this.globalListeners.getListeners(SpawnServiceListener.class)) {
  			l.agentSpawned(spawningAgent, context, agents, initializationParameters);
  		}
  
  		// Send the event in the default space.
  		final EventSpace defSpace = context.getDefaultSpace();
  		assert defSpace != null : "A context does not contain a default space"; //$NON-NLS-1$
  		final UUID spawner = spawningAgent == null ? context.getID() : spawningAgent;
  		final Address source = new Address(defSpace.getSpaceID(), spawner);
  		assert source != null;
  		final Collection<UUID> spawnedAgentIds = Collections3.serializableCollection(
  				Collections2.transform(agents, it -> it.getID()));
  		final AgentSpawned event = new AgentSpawned(source, agentClazz.getName(), spawnedAgentIds);
  		final Scope<Address> scope = address -> {
  			final UUID receiver = address.getUUID();
  			return !spawnedAgentIds.parallelStream().anyMatch(it -> it.equals(receiver));
  		};
  		// Event must not be received by the spawned agent.
  		defSpace.emit(
  				// No need to give an event source because it is explicitly set above.
  				null,
  				event,
  				scope);
  	}