Gerando métodos com tipos genéricos com o gerador de bytecode do Asm (ClassWriter)

Definir getters e setters simples é fácil usando o Asm (e, felizmente, é explicado nas perguntas frequentes). Mas uma coisa que não é mencionada, e para a qual não consegui encontrar documentação, é como implementá-las usando informações de tipo genérico.

Na verdade, sou capaz de determinar informações de tipo genérico com bastante facilidade (já que o código utilizará campos e / ou métodos existentes e o tratamento e resolução de tipos genéricos completos existem). Eu só preciso gerar a versão genérica para os tipos que incluem o tipo genérico.

Espero que isso seja tão fácil quanto modificar as chamadas de assinatura Asm ClassWriter / MethodVisitor, mas alguns comentários na documentação indicam que pode não ser tão fácil (como as informações genéricas são armazenadas em um local um pouco diferente das informações regulares).

EDITAR: parece que o ponto de entrada é "ClassWriter.visitField / Method (...., Signature string) - observe que é" description "que contém informações normais não genéricas da classe, mas o termo" signature "(no JLS) refere-se especificamente a informações de tipo incluindo genéricos.

questionAnswers(2)

yourAnswerToTheQuestion