Dispara dinámicamente el evento CDI con calificador con miembros

Estoy tratando de usar eventos CDI en mis servicios de back-end, en JBoss AS6, idealmente con la máxima reutilización de código.

Puedo ver en los documentos que puedo reducir las clases de anotación de calificador que tengo que crear usando un calificador con miembros, por ejemplo,

@Qualifier
@Retention(RUNTIME)
@Target({METHOD, FIELD, PARAMETER, TYPE})
public @interface Type {
    TypeEnum value();
}

Puedo observar esto con

public void onTypeAEvent(@Observes @Type(TypeEnum.TYPEA) String eventMsg) {...}

Hasta aquí todo bien. Sin embargo, para reducir aún más el número de clases necesarias, quiero tener una clase EventFirer, donde el calificador del evento lanzado es dinámico. No es un problema con calificadores sin miembros:

public class DynamicEventFirer {

    @Inject @Any private Event<String> event;

    public void fireEvent(AnnotationLiteral<?> eventQualifier){
        event.select(eventQualifier).fire("FIRED"); 
    }
}

then llamado como

dynamicEventFirer.fireEvent(new AnnotationLiteral<Type>() {});

¿Pero qué pasa cuando el calificador debe tener miembros? Mirando el código de AnnotationLiteral, ciertamente está configurado para miembros, y el comentario del elemento de clase tiene el ejemplo:

new PayByQualifier() { public PaymentMethod value() { return CHEQUE; } }

Esto tiene sentido para mí: está anulando el método value () de la interfaz de anotación. Sin embargo, cuando lo intenté yo mismo:

dynamicEventFirer.fireEvent(new AnnotationLiteral<Type>() {
    public TypeEnum value() {
        return TypeEnum.TYPEA;
    }
});

Recibo la excepción

java.lang.RuntimeException: class uk.co.jam.concept.events.MemberQualifierEventManager$1 does not implement the annotation type with members uk.co.jam.concept.events.Type
    at javax.enterprise.util.AnnotationLiteral.getMembers(AnnotationLiteral.java:69)
    at javax.enterprise.util.AnnotationLiteral.hashCode(AnnotationLiteral.java:281)
    at java.util.HashMap.getEntry(HashMap.java:344)
    at java.util.HashMap.containsKey(HashMap.java:335)
    at java.util.HashSet.contains(HashSet.java:184)
    at org.jboss.weld.util.Beans.mergeInQualifiers(Beans.java:939)
    at org.jboss.weld.bean.builtin.FacadeInjectionPoint.<init>(FacadeInjectionPoint.java:29)
    at org.jboss.weld.event.EventImpl.selectEvent(EventImpl.java:96)
    at org.jboss.weld.event.EventImpl.select(EventImpl.java:80)
    at uk.co.jam.concept.events.DynamicEventFirer.fireEvent(DynamicEventFirer.java:20)

¿Alguien puede ver lo que estoy haciendo mal? MemberQualifierEventManager es un bean ApplicationScoped que llama a DynamicEventFirer para activar el evento.

Gracias, Ben

Respuestas a la pregunta(2)

Su respuesta a la pregunta