docs: private void executeBehaviorMethodsInParalellWithSynchroAtTheEnd(Collection<Runnable> behaviorsMethodsToExecute)
  			throws InterruptedException, ExecutionException {
  
  		final CountDownLatch doneSignal = new CountDownLatch(behaviorsMethodsToExecute.size());
  
  		final OutputParameter<Throwable> runException = new OutputParameter<>();
  
  		for (final Runnable runnable : behaviorsMethodsToExecute) {
  			this.executor.execute(new JanusRunnable() {
  				@Override
  				public void run() {
  					try {
  						runnable.run();
  					} catch (EarlyExitException e) {
  						// Ignore this exception
  					} catch (RuntimeException e) {
  						// Catch exception for notifying the caller
  						runException.set(e);
  						// Do the standard behavior too -> logging
  						throw e;
  					} catch (Exception e) {
  						// Catch exception for notifying the caller
  						runException.set(e);
  						// Do the standard behavior too -> logging
  						throw new RuntimeException(e);
  					} finally {
  						doneSignal.countDown();
  					}
  				}
  			});
  		}
  
  		// Wait for all Behaviors runnable to complete before continuing
  		try {
  			doneSignal.await();
  		} catch (InterruptedException ex) {
  			// This exception occurs when one of the launched task kills the agent before all the
  			// submitted tasks are finished. Keep in mind that killing an agent should kill the
  			// launched tasks.
  			// Example of code that is generating this issue:
  			//
  			// on Initialize {
  			//   in (100) [
  			//     killMe
  			//   ]
  			// }
  			//
  			// In this example, the killMe is launched before the Initialize code is finished;
  			// and because the Initialize event is fired through the current function, it
  			// causes the InterruptedException.
  		}
  
  		// Re-throw the run-time exception
  		if (runException.get() != null) {
  			throw new ExecutionException(runException.get());
  		}
  	}