// ĠIG NORE _ BACKEND : ĠJVM _ IR Ċ // ĠIG NORE _ BACKEND : ĠJS _ IR Ċ // ĠTODO : Ġmut ed Ġautomatically , Ġinvestigate Ġshould Ġit Ġbe Ġran Ġfor ĠJS Ġor Ġnot Ċ // ĠIG NORE _ BACKEND : ĠJS , ĠN ATIVE Ċ Ċ // ĠWITH _ RUNTIME Ċ Ċ import Ġkotlin . test . assertEquals Ċ Ċ open Ġclass ĠA < T 1 , ĠT 2 , ĠT 3 > Ċ Ċ inline Ġfun Ġ< re ified ĠT , Ġre ified ĠR > Ġfoo (): ĠArray < A < *, *, * >> Ġ{ ĊĠĠĠ Ġval Ġx Ġ= Ġobject Ġ{ ĊĠĠĠĠĠĠĠ Ġinline Ġfun Ġ< re ified ĠT 1 , Ġre ified ĠT > Ġbar (): ĠA < *, *, *> Ġ= Ġobject Ġ: ĠA < T 1 , T , R >() Ġ{} ĊĠĠĠĠĠĠĠ Ġfun Ġf 1 () Ġ= Ġbar < T , ĠR >() ĊĠĠĠĠĠĠĠ Ġfun Ġf 2 () Ġ= Ġbar < R , ĠT >() ĊĠĠĠĠĠĠĠ Ġfun Ġf 3 () Ġ= Ġbar < Boolean , ĠT >() ĊĠĠĠĠĠĠĠ Ġfun Ġf 4 () Ġ= Ġbar < T , ĠBoolean >() ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġreturn ĠarrayOf ( x . f 1 (), Ġx . f 2 (), Ġx . f 3 (), Ġx . f 4 ()) Ċ } Ċ Ċ fun Ġbox (): ĠString Ġ{ ĊĠĠĠ Ġval Ġresult Ġ= Ġfoo < Double , ĠInt >() ĊĊĠĠĠ Ġval Ġexpected Ġ= ĠarrayOf ( ĊĠĠĠĠĠĠĠĠĠĠĠ ĠTrip le (" java . lang . Double ", Ġ" java . lang . Integer ", Ġ" java . lang . Integer "), ĊĠĠĠĠĠĠĠĠĠĠĠ ĠTrip le (" java . lang . Integer ", Ġ" java . lang . Double ", Ġ" java . lang . Integer "), ĊĠĠĠĠĠĠĠĠĠĠĠ ĠTrip le (" java . lang . Boolean ", Ġ" java . lang . Double ", Ġ" java . lang . Integer "), ĊĠĠĠĠĠĠĠĠĠĠĠ ĠTrip le (" java . lang . Double ", Ġ" java . lang . Boolean ", Ġ" java . lang . Integer ") ĊĠĠĠ Ġ). map Ġ{ Ġ" A < ${ it . first }, Ġ${ it . second }, Ġ${ it . third }> " Ġ} ĊĊĠĠĠ Ġfor Ġ( i Ġin Ġexpected . indices ) Ġ{ ĊĠĠĠĠĠĠĠ ĠassertEquals ( expected [ i ], Ġresult [ i ]. java Class . get Generic Super class ()?. toString (), Ġ"$ i - th Ġelement ") ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġreturn Ġ" OK " Ċ } Ċ