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));
	}
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)