<commit_before> - TODO or not TODO: InstantiationType.SPRING_COMPONENT ?
        Ça hardcode une dépendance avec Spring.
        Ce serait sans doute mieux dans un module à part (qui s'occuperait aussi de générer SpringMapperContext.java).
        corrolaire : l'utilisation d'une enum pour indiquer la manière d'instancier le mapper n'est pas extensible
                     (ie. ajout d'un support Guice, JEE, ...) utiliser plutôt une interface ?
        meilleure idée
           => supprimer le paramètre de @Mapper
           => déduire le cas enum si c'est une enum qui est annotée
               le nom de la valeur de l'enum n'a pas d'importance, on valide juste à la compilation qu'il n'y en a qu'une
           => déduire le cas constructeur que c'est une enum qui est annotée
           => une API permet d'ajouter une annotation en plus de @Mapper qui fera que l'on créera une classe avec un @Component
              et une autre implémentation de factory
 - TODO : ajouter un paramètre à @Mapper pour préciser la visibilité de la classe Mapper générée (public par défaut, sinon protected)
           -> on n'ajoute pas de paramètre, la visibilité de l'interface générée sera la même que celle de la classe annotée avec @Mapper
 - framework d'injection super léger : essayer Dagger


ROADMAP
 * intégration avec Spring, générer des classes annotées @Component pour les classes @Mapper elles-mêmes annotées avec @Mapper
 * écriture d'un cas d'intégration avec un Spring contexte
 * auto discovery de l'annotation processor
 * séparation en modules spécifiques des annotations et du processor
 - traiter les TODO et FIXME qui trainent dans les sources
 - passe de refacto : sortir code de lecture de API javac des annotation processors, predicates singleton si applicable, ajouter des tests U
 - étudier l'intégration avec l'IDE
 - implémentation du traitement des classes annotées @MapperFactory
    -> supprimer l'annotation @MapperFactory et utiliser uniquement l'annotation @MapperFactoryMethod
       pour discerner le cas "factory"
        - uniquement une classe
        - si aucune méthode @MapperFactoryMethod, classe doit avoir default constructor accessible (cas @Mapper connu)
 - refacto de la génération de code source, écriture d'un writer maison pour clarifier la génération de code
 - visibilité du mapper généré
 - rendre optionel la dépendance à Spring
 - ajouter une annotation pour définir ou surcharger le comportement par défaut qui ajoute des @Component
 - ajouter une annotation @MapperMethod pour ne pas être dépendant de guava<commit_msg>ajout test U à écrire et refacto à faire<commit_after> - TODO or not TODO: InstantiationType.SPRING_COMPONENT ?
        Ça hardcode une dépendance avec Spring.
        Ce serait sans doute mieux dans un module à part (qui s'occuperait aussi de générer SpringMapperContext.java).
        corrolaire : l'utilisation d'une enum pour indiquer la manière d'instancier le mapper n'est pas extensible
                     (ie. ajout d'un support Guice, JEE, ...) utiliser plutôt une interface ?
        meilleure idée
           => supprimer le paramètre de @Mapper
           => déduire le cas enum si c'est une enum qui est annotée
               le nom de la valeur de l'enum n'a pas d'importance, on valide juste à la compilation qu'il n'y en a qu'une
           => déduire le cas constructeur que c'est une enum qui est annotée
           => une API permet d'ajouter une annotation en plus de @Mapper qui fera que l'on créera une classe avec un @Component
              et une autre implémentation de factory
 - TODO : ajouter un paramètre à @Mapper pour préciser la visibilité de la classe Mapper générée (public par défaut, sinon protected)
           -> on n'ajoute pas de paramètre, la visibilité de l'interface générée sera la même que celle de la classe annotée avec @Mapper
 - framework d'injection super léger : essayer Dagger


ROADMAP
 * intégration avec Spring, générer des classes annotées @Component pour les classes @Mapper elles-mêmes annotées avec @Mapper
 * écriture d'un cas d'intégration avec un Spring contexte
 * auto discovery de l'annotation processor
 * séparation en modules spécifiques des annotations et du processor
 - traiter les TODO et FIXME qui trainent dans les sources
 - supprimer les propriétés publiques dans les beans utilisés dans la genération de fichiers sources
 - ajouter test U pour les méthodes de DAMethod
 - ajouter test U pour DAMethodPredicates
 - passe de refacto : sortir code de lecture de API javac des annotation processors, predicates singleton si applicable, ajouter des tests U
 - étudier l'intégration avec l'IDE
 - implémentation du traitement des classes annotées @MapperFactory
    -> supprimer l'annotation @MapperFactory et utiliser uniquement l'annotation @MapperFactoryMethod
       pour discerner le cas "factory"
        - uniquement une classe
        - si aucune méthode @MapperFactoryMethod, classe doit avoir default constructor accessible (cas @Mapper connu)
 - refacto de la génération de code source, écriture d'un writer maison pour clarifier la génération de code
 - visibilité du mapper généré
 - rendre optionel la dépendance à Spring
 - ajouter une annotation pour définir ou surcharger le comportement par défaut qui ajoute des @Component
 - ajouter une annotation @MapperMethod pour ne pas être dépendant de guava
{'fraction_non_alphanumeric': 0.041930674617964965, 'fraction_numerical': 0.0, 'mean_word_length': 3.498742665549036, 'pattern_counts': {'":': 0, '<': 3, '<?xml version=': 0, '>': 15, 'https://': 0, 'lorem ipsum': 0, 'www.': 0, 'xml': 0}, 'pii_count': 0, 'substrings_counts': 0, 'word_list_counts': {'cursed_substrings.json': 0, 'profanity_word_list.json': 0, 'sexual_word_list.json': 0, 'zh_pornsignals.json': 0}}
{'dir': 'git-commits-cleaned', 'id': '688964', 'n_tokens_mistral': 1494, 'n_tokens_neox': 1480, 'n_words': 710}