package Ġcom . sor row blue . tw it lin . v 2 . util Ċ Ċ import Ġcom . sor row blue . tw it lin . v 2 . objects . Reference Tweet Ċ import Ġcom . sor row blue . tw it lin . v 2 . objects . Tweet Ċ Ċ public Ġclass ĠTweet Node ( public Ġval Ġtweet : ĠTweet ) Ġ{ ĊĊĠĠĠ Ġpublic Ġcompanion Ġobject Ġ{ ĊĠĠĠĠĠĠĠ Ġpublic Ġfun Ġbuild Conversation ( parent : ĠTweet , Ġchildren : ĠList < Tweet >): ĠTweet Node Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġroot Ġ= ĠTweet Node ( parent ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġvar Ġor ph ans Ġ= Ġmutable ListOf < Tweet Node >() ĊĠĠĠĠĠĠĠĠĠĠĠ Ġchildren . forEach Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġnode Ġ= ĠTweet Node ( it ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġor ph ans Ġ= Ġor ph ans . filter Not ( node :: find Parent Of ). to Mutable List () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ(! root . find Parent Of ( node )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġor ph ans Ġ+= Ġnode ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġroot ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġval Ġ_ children : ĠMutable List < Tweet Node > Ġ= Ġmutable ListOf () ĊĠĠĠ Ġprivate Ġval Ġreply To : ĠString ? Ġget () Ġ= Ġtweet . referenced T weets ?. find Ġ{ Ġit . type Ġ== ĠReference Tweet . Type . REP LIED _ TO Ġ} ?. id ĊĊĠĠĠ Ġprivate Ġval Ġid Ġget () Ġ= Ġtweet . referenced T weets ?. find Ġ{ Ġit . type Ġ== ĠReference Tweet . Type . RE TW E ET ED Ġ} ?. id Ġ?: Ġtweet . id ĊĊĠĠĠ Ġpublic Ġval Ġchildren : ĠList < Tweet Node > Ġget () Ġ= Ġ_ children ĊĊĠĠĠ Ġpublic Ġfun Ġfind Parent Of ( node : ĠTweet Node ): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( node . reply To Ġ== Ġid ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ_ children . add ( node ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġtrue ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ_ children . forEach Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( it . find Parent Of ( node )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġreturn Ġfalse ĊĠĠĠ Ġ} Ċ } Ċ