// ĠIG NORE _ BACKEND _ FI R : ĠJVM _ IR Ċ // ĠFIR Ġstatus : ĠList Ġis Ġempty Ġfor Ġval Ġargument Type Ġ= Ġmy c Type . arguments . single (). type !! Ċ // ĠTARGET _ BACKEND : ĠJVM Ċ // ĠWITH _ REF LECT Ċ // ĠMODULE : Ġlib Ċ // ĠFILE : ĠA . kt Ċ @ Target ( Annotation Target . TYPE ) Ċ annotation Ġclass ĠAnno ( val Ġvalue : ĠString ) Ċ Ċ class ĠFoo Ċ Ċ type alias ĠMy Foo Ġ= ĠFoo Ċ type alias ĠMy Maybe Foo Ġ= ĠFoo ? Ċ Ċ class ĠC < T >( val Ġt : ĠT ) Ċ Ċ type alias ĠMy CM y Foo Ġ= ĠC < @ Anno (" OK ") ĠMy Foo ?> Ċ type alias ĠMy CM aybe Foo Ġ= ĠC < @ Anno (" OK ") ĠMy Maybe Foo > Ċ Ċ // ĠMODULE : Ġmain ( lib ) Ċ // ĠFILE : ĠB . kt Ċ fun Ġtest My Foo ( my c : ĠMy CM y Foo ) Ġ{} Ċ fun Ġtest My Maybe Foo ( my c my b : ĠMy CM aybe Foo ) Ġ{} Ċ Ċ fun Ġbox (): ĠString Ġ{ ĊĠĠĠ Ġtest My Foo ( C ( null )) ĊĠĠĠ Ġtest My Maybe Foo ( C ( null )) ĊĊĠĠĠ Ġfor Ġ( fn Ġin ĠlistOf (:: test My Foo , Ġ:: test My Maybe Foo )) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġmy c Type Ġ= Ġfn . parameters . single (). type ĊĠĠĠĠĠĠĠ Ġval Ġargument Type Ġ= Ġmy c Type . arguments . single (). type !! ĊĠĠĠĠĠĠĠ Ġif Ġ(! argument Type . is Marked Nullable ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġ" Fail Ġon Ġ$ fn : Ġargument Ġtype Ġshould Ġbe Ġseen Ġas Ġnullable " ĊĊĠĠĠĠĠĠĠ Ġval Ġannotations Ġ= Ġargument Type . annotations ĊĠĠĠĠĠĠĠ Ġif Ġ( annotations . toString () Ġ!= Ġ"[ @ Anno ( value = OK )] ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġ" Fail Ġon Ġ$ fn : Ġ$ annotations " ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġreturn Ġ" OK " Ċ }