Code review comment: Hm, this means that we only support field injection. In fact, we can simply iterate over all injection points: ```java for (InjectionPointInfo injectionPoint : validationContext.get(Key.INJECTION_POINTS)) {    // TODO } ``` I'll try to update this PR in a moment...

Code under review:
public void validate(ValidationContext validationContext) {

                AnnotationStore annotationStore = validationContext.get(Key.ANNOTATION_STORE);

                
                for (BeanInfo bean : validationContext.get(Key.BEANS)) {
                    if (bean.isClassBean()) {
                        
                        ClassInfo ci = bean.getTarget()
                                .orElseThrow(() -> new IllegalStateException("Target expected")).asClass();
                        for (MethodInfo method : ci.methods()) {
                            if (annotationStore.hasAnnotation(method, NAME_INCOMING)
                                    || annotationStore.hasAnnotation(method, NAME_OUTGOING)) {
                                
                                mediatorMethods.produce(new MediatorBuildItem(bean, method));
                                LOGGER.debugf("Found mediator business method %s declared on %s", method, bean);
                            }
                        }

                        for (FieldInfo field : ci.fields()) {
                            if (annotationStore.hasAnnotation(field, NAME_STREAM)) {
                                if (field.type().name().equals(NAME_EMITTER)) {
                                    String name = annotationStore.getAnnotation(field, NAME_STREAM).value().asString();
                                    LOGGER.debugf("Emitter field '%s'  detected, stream name: '%s'", field.name(), name);
                                    emitterFields.produce(new EmitterBuildItem(name));
                                }
                            }
                        }
                    }
                }
            }

Line commented on: for (FieldInfo field : ci.fields()) {

Revised code:
public void validate(ValidationContext validationContext) {

                AnnotationStore annotationStore = validationContext.get(Key.ANNOTATION_STORE);

                
                for (BeanInfo bean : validationContext.get(Key.BEANS)) {
                    if (bean.isClassBean()) {
                        
                        for (MethodInfo method : bean.getTarget().get().asClass().methods()) {
                            if (annotationStore.hasAnnotation(method, NAME_INCOMING)
                                    || annotationStore.hasAnnotation(method, NAME_OUTGOING)) {
                                
                                mediatorMethods.produce(new MediatorBuildItem(bean, method));
                                LOGGER.debugf("Found mediator business method %s declared on %s", method, bean);
                            }
                        }
                    }
                }

                for (InjectionPointInfo injectionPoint : validationContext.get(Key.INJECTION_POINTS)) {
                    if (injectionPoint.getRequiredType().name().equals(NAME_EMITTER)) {
                        AnnotationInstance stream = injectionPoint.getRequiredQualifier(NAME_STREAM);
                        if (stream != null) {
                            
                            String name = stream.value().asString();
                            LOGGER.debugf("Emitter injection point '%s' detected, stream name: '%s'",
                                    injectionPoint.getTargetInfo(), name);
                            emitters.produce(new EmitterBuildItem(name));
                        }
                    }
                }
            }