// JVM_ABI_K1_K2_DIFF: K2 serializes annotation parameter default values (KT-59526).

// FILE: annotations.kt

import kotlin.reflect.*

annotation class Anno(
    val k: KClass<*>,
    val e: C.NestedEnum,
    val a: C.NestedAnno,
)

annotation class AnnoWithDefault(val k: KClass<*> = Nested0::class) {
    class Nested0
}

class C {
    class Nested1

    enum class NestedEnum { E }

    annotation class NestedAnno(val k: KClass<*>) {
        class Nested2
    }
}

// FILE: usage.kt

interface I {
    @Anno(
        C.Nested1::class,
        C.NestedEnum.E,
        C.NestedAnno(C.NestedAnno.Nested2::class),
    )
    @AnnoWithDefault
    fun foo(): String = "OK"
}

// @I.class:
// 5 INNERCLASS
// 1 INNERCLASS C\$Nested1 C Nested1
// 1 INNERCLASS C\$NestedEnum C NestedEnum
// 1 INNERCLASS C\$NestedAnno C NestedAnno
// 1 INNERCLASS C\$NestedAnno\$Nested2 C\$NestedAnno Nested2
// 1 INNERCLASS I\$DefaultImpls I DefaultImpls
