package Ġcom . bad oo . ri bs . routing . state . feature . state Ċ Ċ import Ġandroid . os . Parcelable Ċ import Ġcom . bad oo . ri bs . routing . Routing Ċ import Ġcom . bad oo . ri bs . routing . state . Pool Ċ import Ġcom . bad oo . ri bs . routing . state . Routing Context Ċ import Ġcom . bad oo . ri bs . routing . state . feature . O ngo ing Transition Ċ import Ġcom . bad oo . ri bs . routing . state . feature . Pending Transition Ċ import Ġcom . bad oo . ri bs . routing . state . pool Of Ċ Ċ /** Ċ Ġ* ĠThe Ġstate Ġ[ Routing State Pool ] Ġcan Ġwork Ġwith . Ċ Ġ* Ċ Ġ* Ġ@ param Ġactivation Level Ġrepresents Ġthe Ġmaximum Ġlevel Ġany Ġ[ Routing Context ] Ġcan Ġbe Ġactivated Ġto . ĠCan Ġbe Ġeither Ġ[ SLEEP ING ] Ġor Ġ[ ACTIVE ]. Ċ Ġ* Ġ@ param Ġpool ĠĠĠĠĠĠĠĠĠĠĠ Ġrepresents Ġthe Ġpool Ġof Ġall Ġ[ Routing Context ] Ġelements Ċ Ġ*/ Ċ internal Ġdata Ġclass ĠWorking State < C Ġ: ĠParcel able >( ĊĠĠĠ Ġval Ġactivation Level : ĠRouting Context . Activation State Ġ= ĠRouting Context . Activation State . SLEEP ING , ĊĠĠĠ Ġval Ġpool : ĠPool < C > Ġ= Ġpool Of (), ĊĠĠĠ Ġval Ġpending De activate : ĠSet < Routing < C >> Ġ= Ġset Of (), ĊĠĠĠ Ġval Ġpending Removal : ĠSet < Routing < C >> Ġ= Ġset Of (), ĊĠĠĠ Ġval Ġongoing Transitions : ĠList < O ngo ing Transition < C >> Ġ= Ġempty List (), ĊĠĠĠ Ġval Ġpending Transitions : ĠList < Pending Transition < C >> Ġ= Ġempty List () Ċ ) Ġ{ ĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠConverts Ġthe Ġ[ Working State ] Ġto Ġ[ Saved State ] Ġby Ġshrink ing Ġall ĊĠĠĠĠ Ġ* Ġ[ Routing Context . Resolved ] Ġelements Ġback Ġto Ġ[ Routing Context . Un resolved ] ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġto Saved State (): ĠSaved State < C > Ġ= ĊĠĠĠĠĠĠĠ ĠSaved State ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġpool . filter Ġ{ Ġ! pending Removal . contains ( it . key ) Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. map Ġ{ Ġentry Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġoriginal Ġ= Ġentry . value ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġpending De activate Applied Ġ= Ġwhen Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ! pending De activate . contains ( entry . key ) Ġ-> Ġoriginal ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ-> Ġoriginal . with Activation State ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġactivation State Ġ= ĠRouting Context . Activation State . IN ACTIVE ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġentry . key Ġto Ġpending De activate Applied . shrink () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. toMap () ĊĠĠĠĠĠĠĠ Ġ) Ċ } Ċ Ċ internal Ġfun Ġ< C Ġ: ĠParcel able > ĠWorking State < C >. with Defaults ( defaults : ĠPool < C >) Ġ= ĊĠĠĠ Ġcopy ( ĊĠĠĠĠĠĠĠ Ġ// ĠDefaults Ġshould Ġnot Ġoverwrite Ġexisting Ġelements ĊĠĠĠĠĠĠĠ Ġpool Ġ= Ġpool Ġ+ Ġdefaults Ġ+ Ġpool ĊĠĠĠ Ġ) Ċ