// ĠIG NORE _ BACKEND : ĠJS , ĠJS _ IR , ĠW ASM Ċ // ĠIG NORE _ BACKEND : ĠJS _ IR _ ES 6 Ċ // ĠWITH _ REF LECT Ċ Ċ package Ġtest Ċ Ċ import Ġkotlin . reflect . type Of Ċ import Ġkotlin . reflect . K Class Ċ import Ġkotlin . reflect . K Type Ċ Ċ interface ĠK Function < out ĠR > Ċ Ċ val Ġ< T Ġ: ĠAny > ĠK Class < T >. primary Constructor 0 : ĠK Function < T > ĊĠĠĠ Ġget () Ġ= Ġobject Ġ: ĠK Function < T > Ġ{} Ċ Ċ interface ĠA < out ĠT Ġ: ĠAny > Ġ{ ĊĠĠĠ Ġval Ġt : ĠT Ċ } Ċ Ċ inline Ġfun Ġ< re ified ĠT Ġ: ĠK Function < E >, ĠE Ġ: ĠAny > Ġbar ( w : ĠA < E >): ĠPair < K Type , ĠK Function < E >> Ġ{ ĊĠĠĠ Ġval Ġq : ĠK Function < E > Ġ= Ġw . t :: class . primary Constructor 0 ĊĠĠĠ Ġreturn ĠtypeOf < T >() Ġto Ġq Ċ } Ċ Ċ inline Ġfun Ġ< re ified ĠQ > ĠtypeOf Value ( q : ĠQ ): ĠK Type Ġ{ ĊĠĠĠ Ġreturn ĠtypeOf < Q >() Ċ } Ċ Ċ fun Ġbox (): ĠString Ġ{ ĊĠĠĠ Ġval Ġq : ĠA < *> Ġ= Ġobject Ġ: ĠA < CharSequence > Ġ{ ĊĠĠĠĠĠĠĠ Ġoverride Ġval Ġt : ĠCharSequence ĊĠĠĠĠĠĠĠĠĠĠĠ Ġget () Ġ= Ġ"" ĊĠĠĠ Ġ} ĊĠĠĠ Ġval Ġ( w , Ġf ) Ġ= Ġbar ( q ) Ġ// ĠT Ġshould Ġbe Ġinferred Ġto ĠK Function < Capt ured (* )> Ġand Ġshould Ġbe Ġapprox imated Ġto ĠK Function < Any >, Ġnot ĠK Function < *> ĊĊĠĠĠ Ġval Ġexpected Ġ= Ġ" test . K Function < kotlin . Any >" ĊĠĠĠ Ġif Ġ( w . toString () Ġ!= Ġexpected ) Ġreturn Ġ" Fail Ġ 1 : Ġ$ w " ĊĠĠĠ Ġif Ġ( type Of Value ( f ). toString () Ġ!= Ġexpected ) Ġreturn Ġ" Fail Ġ 2 : Ġ$ f " ĊĠĠĠ Ġreturn Ġ" OK " Ċ } Ċ