I have been reading the spec about events and I'm a little confused.

In "Chapter 10. Events", the spec says:
I understand this to mean that the actual payload is what's important when resolving observer methods. Yet, this is not true when firing events through the Event bean. When firing events through the Event bean, observers are resolved according to the type parameter of the injected Event bean (or the type passed to event.select()) and not the actual type of payload supplied to event.fire(payload) (see https://issues.jboss.org/browse/WELD-672).

In WELD, the actual type of the payload is only important when firing events through BeanManager.fireEvent(), which is not even mentioned in "10.3. Firing events". From 10.3, I would expect that the usual way of firing events is through the Event bean, and firing events through the BeanManager is the low-level way of doing it. 

I have a few more questions, but they are all inter-dependent, so it's probably better if you help me resolve this one first, and then I'll move on to the rest.

Marko