src/core/se/jbee/inject/event/EventModule.java
protected <T> void handle(Class<T> event) {
		if (!event.isInterface())
			throw new IllegalArgumentException(
					"Event type has to be an interface but was: " + event);
		initbind(event).to((Initialiser<T>) (listener,
				injector) -> injector.resolve(EventProcessor.class).register(
						event, listener));
		bind(event).toSupplier((dep,
				injector) -> injector.resolve(EventProcessor.class).getProxy(
						event));
	}
protected <T> void handle(Class<T> event) {
		if (!event.isInterface())
			throw new IllegalArgumentException(
					"Event type has to be an interface but was: " + event);
		initbind(event).to((Initialiser<T>) (listener,
				injector) -> injector.resolve(EventProcessor.class).register(
						event, listener));
		bind(event).toSupplier((dep,
				injector) -> injector.resolve(EventProcessor.class).getProxy(
						event));
	}
protected < T > void handle ( Class < T > event ) { if ( ! event . isInterface ( ) ) throw new IllegalArgumentException ( "Event type has to be an interface but was: " + event ) ; initbind ( event ) . to ( ( Initialiser < T > ) ( listener , injector ) -> injector . resolve ( EventProcessor . class ) . register ( event , listener ) ) ; bind ( event ) . toSupplier ( ( dep , injector ) -> injector . resolve ( EventProcessor . class ) . getProxy ( event ) ) ; }
Registers the given event type so that it is handled by the
{@link EventProcessor} system.

That means classes implementing the given event interface "automatically"
receive calls to any of the interface methods. When The event interface
should be injected to signal/call one of its methods a
{@link EventProcessor#getProxy(Class)} is injected.

@param event the type of the event/listener (must be an interface)
Registers the given event type so that it is handled by the { @link EventProcessor } system .