// Ġ! DIAG NO ST ICS : Ġ- UNUSED _ PARAMETER Ġ- DEBUG _ INFO _ SM ART CAST Ċ Ċ interface ĠData Ċ interface ĠItem Ċ class ĠFlag Data ( val Ġvalue : ĠBoolean ) Ġ: ĠData Ċ class ĠList Data < T Ġ: ĠItem >( val Ġlist : ĠList < T >) Ġ: ĠData Ċ Ċ fun Ġ< T > ĠlistOf ( var arg Ġitems : ĠT ): ĠList < T > Ġ= Ġnull !! Ċ Ċ fun Ġtest 1 ( o : ĠAny ) Ġ= Ġ<! TYPE _ IN FER ENCE _ FAILED _ ON _ SPECIAL _ CON STRUCT !> when <! > Ġ( o ) Ġ{ ĊĠĠĠ Ġis ĠList < *> Ġ-> ĊĠĠĠĠĠĠĠ ĠList Data ( listOf ()) ĊĠĠĠ Ġis ĠInt Ġ-> Ġwhen Ġ{ ĊĠĠĠĠĠĠĠ Ġo Ġ< Ġ 0 Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ ĠFlag Data ( true ) ĊĠĠĠĠĠĠĠ Ġelse Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġnull ĊĠĠĠ Ġ} ĊĠĠĠ Ġelse Ġ-> ĊĠĠĠĠĠĠĠ Ġnull Ċ } Ċ Ċ fun Ġtest 1 x ( o : ĠAny ): ĠData ? Ġ= Ġwhen Ġ( o ) Ġ{ ĊĠĠĠ Ġis ĠList < *> Ġ-> ĊĠĠĠĠĠĠĠ ĠList Data ( listOf ()) ĊĠĠĠ Ġis ĠInt Ġ-> Ġwhen Ġ{ ĊĠĠĠĠĠĠĠ Ġo Ġ< Ġ 0 Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ ĠFlag Data ( true ) ĊĠĠĠĠĠĠĠ Ġelse Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġnull ĊĠĠĠ Ġ} ĊĠĠĠ Ġelse Ġ-> ĊĠĠĠĠĠĠĠ Ġnull Ċ } Ċ Ċ fun Ġtest 2 () Ġ= ĊĠĠĠĠĠĠĠ Ġ<! TYPE _ IN FER ENCE _ FAILED _ ON _ SPECIAL _ CON STRUCT !> if <! > Ġ( true ) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠList Data ( listOf ()) ĊĠĠĠĠĠĠĠ Ġelse ĊĠĠĠĠĠĠĠĠĠĠĠ ĠFlag Data ( true ) Ċ Ċ fun Ġtest 2 x (): ĠData Ġ= ĊĠĠĠĠĠĠĠ Ġif Ġ( true ) ĠList Data ( listOf ()) Ġelse ĠFlag Data ( true ) Ċ Ċ fun Ġtest 2 y (): ĠAny Ġ= ĊĠĠĠĠĠĠĠ Ġif Ġ( true ) ĠList Data ( listOf ()) Ġelse ĠFlag Data ( true ) Ċ Ċ fun Ġtest 2 z (): ĠAny Ġ= ĊĠĠĠĠĠĠĠ Ġrun Ġ{ Ġif Ġ( true ) ĠList Data ( listOf ()) Ġelse ĠFlag Data ( true ) Ġ} ĊĊ