class HandlerDescriptionAnalyzer implements SagaAnalyzer {

    @Override
    public Map<Class<? extends Saga>, SagaHandlersMap> scanHandledMessageTypes() {

        Collection<Class<? extends Saga>> sagaClasses = typeScanner.scanForSagas();
        Stream<DescribesHandlers> directDescriptionSagas = sagaClasses.stream()
                .filter(DescribesHandlers.class::isAssignableFrom)
                .filter(c -> !Modifier.isAbstract(c.getModifiers()))
                .flatMap(this::createDirectDescriptionInstance);

        return createHandlersMap(directDescriptionSagas);
    }

    @Inject public  HandlerDescriptionAnalyzer(final TypeScanner typeScanner, final SagaInstanceCreator instanceCreator);

}