Private methods using ObservesAsync for parameter are marked as 'unused private method'

In Java EE, CDI can be used for asynchronous invocation of private methods (to ensure that these methods cannot be called directly from outside the class).

Error example (and for quick reproduction):

import jakarta.enterprise.context.ApplicationScoped;
import jakarta.enterprise.event.Event;
import jakarta.enterprise.event.ObservesAsync;
import jakarta.inject.Inject;

@ApplicationScoped
public class Processor {
    private record StartAsyncProcessEvent(int id) {}

    @Inject
    private Event<StartAsyncProcessEvent> startAsyncProcessEvent;

    void startAsyncProcess() {
        startAsyncProcessEvent.fireAsync(new StartAsyncProcessEvent());
    }

    /** Sonar marks this perfectly valid method as "unused private method" ! */
    private void asyncProcess(@ObservesAsync StartAsyncProcessEvent event) {
        System.out.println("Started async process, id: " + event.id());
    }
}

Here, the current (as of 2025-02-20) SonarQube Cloud default Java rules incorrectly mark the private asyncProcess method as “unused private method” (rule java:S1144), forcing me to add @SuppressWarning("java:S1144") to all these methods in my projects.

SONARJAVA-4347 resulted in a fix for the @Observes annotation, but it seems to still be a problem with the @ObservesAsync annotation.