Themis/src/main/java/com/shadowcs/nightraven/themis/EventManager.java
@SuppressWarnings("unchecked")
	public <E> Future<E> submitEvent(Class<E> clazz, E event) {
		
		Set<Consumer<?>> list = listenerCache.get(clazz);
		
		switch(async) {
			case EVENT:
				return pool.submit(() -> list.forEach((listener) -> ((Consumer<E>) listener).accept(event)), event);
			case NONE:
				list.forEach((listener) -> ((Consumer<E>) listener).accept(event));
				return null;
			case TOTAL:
				list.forEach((listener) -> pool.submit(() -> ((Consumer<E>) listener).accept(event)));
				return null;
			default:
				return null;
		}
	}
/**
	 * 
	 * @param clazz The class of the event
	 * @param event The event to be fired
	 * @return A {@code Future} representing the result of an asynchronous computation. {@code null} is the most common return and does not 
	 * indicate that an error did occur but that there was no {@code Future} to return. This could be due to the {@code AsynchronousMode} or
	 * because of an error.
	 */
@param clazz The class of the event
@param event The event to be fired
@return A  Future representing the result of an asynchronous computation.  null is the most common return and does not
indicate that an error did occur but that there was no  Future to return. This could be due to the  AsynchronousMode or
because of an error.
@param clazz The class of the event @param event The event to be fired @return A Future representing the result of an asynchronous computation . null is the most common return and does not indicate that an error did occur but that there was no Future to return . This could be due to the AsynchronousMode or because of an error .
@SuppressWarnings("unchecked")
	public <E> Future<E> submitEvent(Class<E> clazz, E event) {
		Set<Consumer<?>> list = listenerCache.get(clazz);
		switch(async) {
			case EVENT:
				return pool.submit(() -> list.forEach((listener) -> ((Consumer<E>) listener).accept(event)), event);
			case NONE:
				list.forEach((listener) -> ((Consumer<E>) listener).accept(event));
				return null;
			case TOTAL:
				list.forEach((listener) -> pool.submit(() -> ((Consumer<E>) listener).accept(event)));
				return null;
			default:
				return null;
		}
	}
@ SuppressWarnings ( "unchecked" ) public < E > Future < E > submitEvent ( Class < E > clazz , E event ) { Set < Consumer < ? > > list = listenerCache . get ( clazz ) ; switch ( async ) { case EVENT : return pool . submit ( ( ) -> list . forEach ( ( listener ) -> ( ( Consumer < E > ) listener ) . accept ( event ) ) , event ) ; case NONE : list . forEach ( ( listener ) -> ( ( Consumer < E > ) listener ) . accept ( event ) ) ; return null ; case TOTAL : list . forEach ( ( listener ) -> pool . submit ( ( ) -> ( ( Consumer < E > ) listener ) . accept ( event ) ) ) ; return null ; default : return null ; } }
@param clazz The class of the event
 @param event The event to be fired
 @return A {@code Future} representing the result of an asynchronous computation.
@param clazz The class of the event @param event The event to be fired @return A { @code Future } representing the result of an asynchronous computation .