Ответ 1
kotlin.Metadata
содержит информацию о символах Котлина, таких как их имена, подписи, отношения между типами и т.д. Некоторые из этой информации уже присутствуют в подписях JVM в файлах классов, но многого нет, так как существует довольно много Котлин -специфические вещи, которые файлы классов JVM не могут представлять должным образом: тип nullability, изменяемые/только для чтения интерфейсы коллекции, дисперсия объявления-сайта и другие.
Никаких конкретных действий не было сделано, чтобы сделать схему данных, закодированных в этой аннотации общедоступной, потому что для большинства пользователей такие данные необходимы для интроспекции программы во время выполнения, а библиотека отражения Kotlin предоставляет для этого хороший API.
Если вам нужно проверить специфические для Kotlin вещи, которые не отображаются через API отражения, или вам просто интересно, что еще хранится в этой аннотации, вы можете взглянуть на реализацию kotlinx.reflect.lite. Это легкая библиотека, ядром которой является синтаксический анализатор, созданный protobuf. В настоящий момент там не так много поддержки, но есть доступные схемы, которые вы можете использовать для чтения любых других данных, которые вам нужны.
UPD (август 2018 года): поскольку на это был дан ответ, мы опубликовали новую (экспериментальную и нестабильную) библиотеку, предназначенную для чтения и модификации метаданных: https://discuss.kotlinlang.org/t/объявляя-kotlinx-метаданные JVM-библиотека-для-чтения модифицирующего-метаданные из-Котлина-Jvm-класс файлы /7980