// ĠTARGET _ BACKEND : ĠJVM Ċ Ċ // ĠWITH _ RUNTIME Ċ // ĠK T - 5 6 6 5 Ċ Ċ @ Retention ( Annotation Retention . RUNTIME ) Ċ annotation Ġclass ĠFirst Ċ Ċ @ Retention ( Annotation Retention . RUNTIME ) Ċ annotation Ġclass ĠSecond ( val Ġvalue : ĠString ) Ċ Ċ enum Ġclass ĠE Ġ{ ĊĠĠĠ Ġ@ First ĊĠĠĠ ĠE 1 Ġ{ ĊĠĠĠĠĠĠĠ Ġfun Ġfoo () Ġ= Ġ" something " ĊĠĠĠ Ġ}, ĊĊĠĠĠ Ġ@ Second (" OK ") ĊĠĠĠ ĠE 2 Ċ } Ċ Ċ fun Ġbox (): ĠString Ġ{ ĊĠĠĠ Ġval Ġe Ġ= ĠE :: class . java ĊĊĠĠĠ Ġval Ġe 1 Ġ= Ġe . getDeclared Field ( E . E 1 . toString ()). get Annotations () ĊĠĠĠ Ġif Ġ( e 1 . size Ġ!= Ġ 1 ) Ġreturn Ġ" Fail ĠE 1 Ġsize : Ġ${ e 1 . toList () }" ĊĠĠĠ Ġif Ġ( e 1 [ 0 ]. annotation Class . java Ġ!= ĠFirst :: class . java ) Ġreturn Ġ" Fail ĠE 1 : Ġ${ e 1 . toList () }" ĊĊĠĠĠ Ġval Ġe 2 Ġ= Ġe . getDeclared Field ( E . E 2 . toString ()). get Annotations () ĊĠĠĠ Ġif Ġ( e 2 . size Ġ!= Ġ 1 ) Ġreturn Ġ" Fail ĠE 2 Ġsize : Ġ${ e 2 . toList () }" ĊĠĠĠ Ġif Ġ( e 2 [ 0 ]. annotation Class . java Ġ!= ĠSecond :: class . java ) Ġreturn Ġ" Fail ĠE 2 : Ġ${ e 2 . toList () }" ĊĊĠĠĠ Ġreturn Ġ( e 2 [ 0 ] Ġas ĠSecond ). value Ċ } Ċ