Ġimport Ġkotlin . reflect . K Class Ċ Ġimport Ġkotlin . reflect . cast Ċ Ġobject ĠFl att ener Ġ{ ĊĠĠ Ġfun Ġflatten ( source : ĠCollection < Any ?> ): ĠList < Any > Ġ{ ĊĠĠĠĠ Ġval Ġresult Ġ= Ġmutable ListOf < Int >() ĊĠĠĠĠ Ġflatten ( nested List ( source , ĠInt :: class ), Ġresult ) ĊĠĠĠĠ Ġreturn Ġresult ĊĠĠ Ġ} ĊĊĠĠ Ġfun Ġflatten ( source : ĠNested List < Int >, Ġresult : ĠMutable List < Int >) Ġ{ ĊĠĠĠĠ Ġwhen Ġ( source ) Ġ{ ĊĠĠĠĠĠĠ Ġis ĠVal Nested List Ġ-> Ġresult . add ( source . value ) ĊĠĠĠĠĠĠ Ġis ĠCol Nested List Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠ Ġfor Ġ( element Ġin Ġsource . list ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠ Ġflatten ( element , Ġresult ) ĊĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠ Ġ} ĊĠĠĠĠ Ġ} ĊĠĠ Ġ} ĊĊĠĠ Ġfun Ġ< T Ġ: ĠAny > Ġnested List ( source : ĠCollection < Any ? >, Ġtype : ĠK Class < T >): ĠCol Nested List < T > Ġ{ ĊĠĠĠĠ Ġval Ġresult Ġ= Ġmutable ListOf < Nested List < T >>() ĊĠĠĠĠ Ġfor Ġ( element Ġin Ġsource ) Ġ{ ĊĠĠĠĠĠĠ Ġif Ġ( type . is Instance ( element )) Ġ{ ĊĠĠĠĠĠĠĠĠ Ġresult . add ( Val Nested List ( type . cast ( element ))) ĊĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠ Ġwhen Ġ( element ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠ Ġnull Ġ-> Ġcontinue ĊĠĠĠĠĠĠĠĠĠĠ Ġis ĠCollection < Any ?> Ġ-> Ġresult . add ( nested List ( element , Ġtype )) ĊĊĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ-> Ġthrow ĠIllegalArgumentException () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠ Ġ} ĊĠĠĠĠ Ġ} ĊĠĠĠĠ Ġreturn ĠCol Nested List ( result ) ĊĠĠ Ġ} Ċ Ġ} ĊĊ Ġsealed Ġclass ĠNested List < T > ĊĊ Ġdata Ġclass ĠVal Nested List < T >( val Ġvalue : ĠT ) Ġ: ĠNested List < T >() ĊĊ Ġdata Ġclass ĠCol Nested List < T >( val Ġlist : ĠList < Nested List < T >>) Ġ: ĠNested List < T >()