¿Está documentado el formatting de los datos en kotlin.MetaData en cualquier lugar?

Me interesa saber qué datos se guardan en la anotación de MetaData agregada a cada class de Kotlin.

Pero la mayoría de los campos no dan más detalles que

"Metadatos en un formatting personalizado. El formatting puede ser diferente (o incluso ausente) para diferentes types".

https://github.com/JetBrains/kotlin/blob/master/core/runtime.jvm/src/kotlin/Metadata.kt

¿Hay alguna reference en alguna parte que explique cómo interpretar esta información?

kotlin.Metadata contiene información sobre los símbolos de Kotlin, como sus nombres, firmas, relaciones entre types, etc. Parte de esta información ya está presente en las firmas de JVM en los files de class, pero muchas no lo son, ya que hay bastantes Kotlin. – cosas específicas que los files de la class JVM no pueden representar correctamente: tipo nulability, interfaces de colección mutables / de solo lectura, varianza del sitio de statement, y otros.

No se tomaron medidas específicas para hacer público el esquema de los datos codificados en esta anotación, porque para la mayoría de los usuarios, dichos datos son necesarios para introspectir un progtwig en time de ejecución, y la biblioteca de reflexión Kotlin proporciona una buena API para eso.

Si necesita inspeccionar cosas específicas de Kotlin que no están expuestas a través de la API de reflexión, o simplemente tiene curiosidad por saber qué más está almacenado en esa anotación, puede echarle un vistazo a la implementación de kotlinx.reflect.lite . Es una biblioteca liviana, cuyo núcleo es el analizador de esquema generado por protobuf. No hay mucho soporte allí en este momento, pero hay esquemas disponibles que puede usar para leer cualquier otra información que necesite.

  • Anotación de la invalidation de fuente Java generada (para Kotlin)
  • Manejo de errores de suscripción anidada RX2.0
  • Kotlin: ¿por qué usar classs abstractas (frente a interfaces)?
  • Las classs de datos de Kotlin contienen funciones abiertas
  • ¿Es correcto el comportamiento de las corutinas?
  • Kotlin: ¿Cómo puedo crear una function henetworkingable "estática"?
  • Cómo get el nombre de file de class actual en kotlin
  • Visibilidad del constructor restringida al file
  • Kotlin crea un resultado de consulta para analizar repositorys de Github
  • Recurso esperado de tipo ID
  • ¿Hay alguna diferencia entre "object receptor" y "receptor de extensión"