// ĠIG NORE _ BACKEND : ĠW ASM Ċ // ĠW ASM _ M UTE _ REASON : ĠIG NO RED _ IN _ JS Ċ // ĠIG NORE _ BACKEND : ĠJS _ IR Ċ // ĠIG NORE _ BACKEND : ĠJS _ IR _ ES 6 Ċ // Ġ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 Ċ Ċ inline Ġfun Ġ< R , ĠT > Ġfoo ( x Ġ: ĠR , Ġy Ġ: ĠR , Ġblock Ġ: Ġ( R ) Ġ-> ĠT ) Ġ: ĠT Ġ{ ĊĠĠĠ Ġval Ġa Ġ= Ġx Ġis ĠNumber ĊĠĠĠ Ġval Ġb Ġ= Ġx Ġis ĠObject ĊĊĠĠĠ Ġval Ġb 1 Ġ= Ġx Ġas ĠObject ĊĊĠĠĠ Ġif Ġ( a Ġ&& Ġb ) Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġblock ( x ) ĊĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġblock ( y ) ĊĠĠĠ Ġ} Ċ } Ċ Ċ fun Ġbox () Ġ: ĠString Ġ{ ĊĠĠĠ ĠassertEquals ( 1 , Ġfoo ( 1 , Ġ 2 ) Ġ{ Ġx Ġ-> Ġx Ġas ĠInt Ġ}) ĊĠĠĠ ĠassertEquals (" def ", Ġfoo (" abc ", Ġ" def ") Ġ{ Ġx Ġ-> Ġx Ġas ĠString Ġ}) ĊĊĠĠĠ Ġreturn Ġ" OK " Ċ } Ċ