// ĠIG NORE _ BACKEND _ FI R : ĠJVM _ IR Ċ // ĠTARGET _ BACKEND : ĠJVM Ċ // ĠWITH _ RUNTIME Ċ // ĠFILE : Ġtest . kt Ċ fun Ġbox (): ĠString Ġ{ ĊĠĠĠ Ġfor Ġ( count Ġin Ġ 0 .. 3 ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġtest Ġ= ĠFoo ( count , ĠFoo ( 1 , Ġ" x ", Ġ 2 ), Ġif Ġ( count Ġ> Ġ 0 ) Ġbreak Ġelse Ġ 3 ) ĊĠĠĠĠĠĠĠ Ġif Ġ( count Ġ> Ġ 0 ) Ġreturn Ġ" Fail : Ġcount Ġ= Ġ$ count " ĊĠĠĠĠĠĠĠ Ġif Ġ( test . toString () Ġ!= Ġ" Foo ( 0 , Foo ( 1 , x , 2 ), 3 )") Ġreturn Ġ" Fail : Ġ${ test . toString () }" ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġreturn Ġ" OK " Ċ } ĊĊ Ċ // ĠFILE : Ġutil . kt Ċ val Ġlog Ġ= ĠStringBuilder () Ċ Ċ fun Ġ< T > Ġlogged ( msg : ĠString , Ġvalue : ĠT ): ĠT Ġ{ ĊĠĠĠ Ġlog . append ( msg ) ĊĠĠĠ Ġreturn Ġvalue Ċ } Ċ Ċ // ĠFILE : ĠFoo . kt Ċ class ĠFoo ( val Ġa : ĠInt , Ġval Ġb : ĠAny , Ġval Ġc : ĠInt ) Ġ{ ĊĠĠĠ Ġinit Ġ{ ĊĠĠĠĠĠĠĠ Ġlog . append ("< init >") ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun ĠtoString () Ġ= Ġ" Foo ($ a ,$ b ,$ c )" ĊĊĠĠĠ Ġcompanion Ġobject Ġ{ ĊĠĠĠĠĠĠĠ Ġinit Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġlog . append ("< cl init >") ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ }