final String subject = CDI.getSubjectNameByType(parmClassName);
final Annotation[] qualifiers = InjectUtil.extractQualifiers(instance).toArray(new Annotation[0]);
final Set<String> qualifierNames = CDI.getQualifiersPart(qualifiers);
AnonymousClassStructureBuilderImpl callBack = Stmt.newObject(AbstractCDIEventCallback.class).extend();
BlockBuilder<AnonymousClassStructureBuilderImpl> callBackBlock;
if (qualifierNames != null) {
callBackBlock = callBack.initialize();
for (String qualifierName : qualifierNames) {
callBackBlock.append(Stmt.loadClassMember("qualifiers").invoke("add", qualifierName));
}
callBack = callBackBlock.finish();
}
callBackBlock = callBack.publicOverridesMethod("callback", Parameter.of(Message.class, "message"))
.append(Stmt.declareVariable("msgQualifiers", new TypeLiteral<Set<String>>() {},
Stmt.loadVariable("message").invoke("get", Set.class, CDIProtocol.QUALIFIERS)))
.append(Stmt
.if_(Bool.or(
Stmt.loadClassMember("qualifiers").invoke("equals", Refs.get("msgQualifiers")),