package Ġcom . bad oo . ri bs . routing . source . back stack . operation Ċ Ċ import Ġandroid . os . Parcelable Ċ import Ġcom . bad oo . ri bs . routing . source . back stack . Back Stack Ċ import Ġcom . bad oo . ri bs . routing . history . Routing History Element Ċ import Ġcom . bad oo . ri bs . routing . source . back stack . Elements Ċ Ċ /** Ċ Ġ* ĠOperation : Ċ Ġ* Ċ Ġ* Ġ[ A , ĠB , ĠC ] Ġ+ ĠPop Ġ= Ġ[ A , ĠB ] Ġ Ġ// Ġno Ġoverlay s Ċ Ġ* Ġ[ A , ĠB , ĠC Ġ{ O 1 }] Ġ+ ĠPop Ġ= Ġ[ A , ĠB , ĠC ] Ġ Ġ// Ġoverlay s Ġare Ġpop ped Ġfirst Ċ Ġ*/ Ċ class ĠPop < C Ġ: ĠParcel able > Ġ: ĠBack Stack . Operation < C > Ġ{ ĊĊĠĠĠ Ġoverride Ġfun Ġinvoke ( elements : ĠElements < C >): ĠElements < C > Ġ= ĊĠĠĠĠĠĠĠ Ġwhen Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġelements . can Pop Overlay Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġelements . replace Last With ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġelements . last (). copy ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġoverlay s Ġ= Ġelements . last (). overlay s . drop Last ( 1 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġelements . can Pop Content Ġ-> Ġelements . drop Last ( 1 ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ-> Ġelements ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġis Applicable ( elements : ĠElements < C >): ĠBoolean Ġ= ĊĠĠĠĠĠĠĠ Ġwhen Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġelements . can Pop Overlay Ġ-> Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠ Ġelements . can Pop Ġ-> Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ-> Ġfalse ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun ĠElements < C >. replace Last With ( replacement : ĠRouting History Element < C >): ĠElements < C > Ġ= ĊĠĠĠĠĠĠĠ Ġto Mutable List (). apply Ġ{ Ġset ( last Index , Ġreplacement ) Ġ} Ċ } Ċ Ċ private Ġval Ġ< C Ġ: ĠParcel able > ĠElements < C >. can Pop Content : ĠBoolean ĊĠĠĠ Ġget () Ġ= Ġsize Ġ> Ġ 1 Ċ Ċ internal Ġval Ġ< C Ġ: ĠParcel able > ĠElements < C >. can Pop : ĠBoolean ĊĠĠĠ Ġget () Ġ= Ġcan Pop Content Ġ|| Ġcan Pop Overlay Ċ Ċ internal Ġval Ġ< C Ġ: ĠParcel able > ĠElements < C >. can Pop Overlay : ĠBoolean ĊĠĠĠ Ġget () Ġ= Ġlast OrNull ()?. overlay s ?. isNotEmpty () Ġ== Ġtrue Ċ Ċ fun Ġ< C Ġ: ĠParcel able > ĠBack Stack < C >. pop () Ġ{ ĊĠĠĠ Ġaccept ( Pop ()) Ċ } Ċ