package Ġcom . example . astro bin . api Ċ Ċ import Ġcom . squareup . mos hi . Json Ċ Ċ data Ġclass ĠAst ro Comment ( ĊĠ Ġ@ field : Json ( name =" id ") Ġval Ġid : ĠInt , ĊĠ Ġ@ field : Json ( name =" content _ type ") Ġval Ġcontent _ type : ĠInt , ĊĠ Ġ@ field : Json ( name =" object _ id ") Ġval Ġobject _ id : ĠInt , ĊĠ Ġ@ field : Json ( name =" author ") Ġval Ġauthor : ĠInt , ĊĠ Ġ@ field : Json ( name =" author _ avatar ") Ġval Ġauthor _ avatar : ĠString , ĊĠ Ġ@ field : Json ( name =" text ") Ġval Ġtext : ĠString , ĊĠ Ġ@ field : Json ( name =" html ") Ġval Ġhtml : ĠString , ĊĠ Ġ@ field : Json ( name =" created ") Ġval Ġcreated : ĠString , ĊĠ Ġ@ field : Json ( name =" updated ") Ġval Ġupdated : ĠString , ĊĠ Ġ@ field : Json ( name =" parent ") Ġval Ġparent : ĠInt ?, ĊĠ Ġ@ field : Json ( name =" deleted ") Ġval Ġdeleted : ĠBoolean , ĊĠ Ġ@ field : Json ( name =" pending _ mod eration ") Ġval Ġpending _ mod eration : ĠBoolean ?, ĊĠ Ġ@ field : Json ( name =" mod erator ") Ġval Ġmod erator : ĠInt ?, ĊĠ Ġ@ field : Json ( name =" likes ") Ġval Ġlikes : ĠList < Int > ?, ĊĠ Ġ@ field : Json ( name =" depth ") Ġval Ġdepth : ĠInt , Ċ ) Ġ{ ĊĠ Ġprivate Ġval Ġmutable Children Ġ= Ġmutable ListOf < Ast ro Comment >() ĊĠ Ġval Ġchildren : ĠList < Ast ro Comment > Ġget () Ġ= Ġmutable Children ĊĊĠ Ġcompanion Ġobject Ġ{ ĊĠĠĠ Ġfun Ġcollect ( comments : ĠList < Ast ro Comment >): ĠList < Ast ro Comment > Ġ{ ĊĠĠĠĠĠ Ġif Ġ( comments . isEmpty ()) Ġreturn Ġcomments ĊĠĠĠĠĠ Ġval Ġcomment ById Ġ= Ġcomments . associate By Ġ{ Ġit . id Ġ} ĊĠĠĠĠĠ Ġval Ġresult Ġ= Ġmutable ListOf < Ast ro Comment >() ĊĊĠĠĠĠĠ Ġ// Ġ! ass umes Ġcomments Ġare Ġsorted Ġby Ġcreation Ġdate ĊĠĠĠĠĠ Ġfor Ġ( comment Ġin Ġcomments ) Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( comment . parent Ġ== Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠ Ġresult . add ( comment ) ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠ Ġcomment ById [ comment . parent ] !!. mutable Children . add ( comment ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠ Ġreturn Ġresult ĊĠĠĠ Ġ} ĊĠ Ġ} Ċ } Ċ Ċ fun Ġ< T > ĠList < T >. deep Flatten Into ( target : ĠMutable List < T >, Ġfn : Ġ( T ) Ġ-> ĠList < T >): ĠList < T > Ġ{ ĊĠ ĠforEach Ġ{ ĊĠĠĠ Ġtarget . add ( it ) ĊĠĠĠ Ġfn ( it ). deep Flatten Into ( target , Ġfn ) ĊĠ Ġ} ĊĠ Ġreturn Ġtarget Ċ }