package Ġcom . gu illa ume wil mot . sw ole ai . util . storage Ċ Ċ import Ġcom . gu illa ume wil mot . sw ole ai . model . Nullable Ċ import Ġcom . gu illa ume wil mot . sw ole ai . model . Program Model Ċ import Ġcom . gu illa ume wil mot . sw ole ai . model . User Model Ċ import Ġcom . gu illa ume wil mot . sw ole ai . model . as Nullable Ċ import Ġio . reactivex . rx java 3 . core . Back pressure Strategy Ċ import Ġio . reactivex . rx java 3 . core . Comp letable Ċ import Ġio . reactivex . rx java 3 . core . Flow able Ċ import Ġio . reactivex . rx java 3 . subjects . Behavior Subject Ċ import Ġkotlinx . coroutines . Experimental Cor outines Api Ċ Ċ @ Experimental Cor outines Api Ċ class ĠData Storage Mock Ġ: ĠData Storage Ġ{ ĊĊĠĠĠ Ġoverride Ġfun Ġ< T > Ġto Storage ( data Definition : ĠData Definition , Ġobj : ĠT ): ĠComp letable Ġ{ ĊĠĠĠĠĠĠĠ Ġwhen Ġ( data Definition ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠData Definition . USER Ġ-> Ġdata Holder ._ user Field . onNext (( obj Ġas ĠUser Model ). as Nullable ()) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠData Definition . PROGRAM Ġ-> Ġdata Holder ._ program Field . onNext (( obj Ġas ĠProgram Model ). as Nullable ()) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠData Definition . SELECTED _ SESSION _ ID Ġ-> Ġdata Holder ._ selected SessionId Field . onNext (( obj Ġas ĠInt ). as Nullable ()) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġreturn ĠComp letable . complete () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠData ĊĠĠĠĠ Ġ*/ ĊĊĠĠĠ Ġoverride Ġval Ġdata Holder Ġby Ġlazy Ġ{ ĊĠĠĠĠĠĠĠ ĠData Holder Impl () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Suppress (" PropertyName ") ĊĠĠĠ Ġinner Ġclass ĠData Holder Impl Ġ: ĠData Holder Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġ_ user Field : ĠBehavior Subject < Nullable < User Model >> Ġby Ġlazy Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠBehavior Subject . create Default ( Nullable ( null )) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġval Ġ_ program Field : ĠBehavior Subject < Nullable < Program Model >> Ġby Ġlazy Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠBehavior Subject . create Default ( Nullable ( null )) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġval Ġ_ selected SessionId Field : ĠBehavior Subject < Nullable < Int >> Ġby Ġlazy Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠBehavior Subject . create Default ( Nullable ( null )) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġoverride Ġval Ġuser Field : ĠFlow able < Nullable < User Model >> Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ_ user Field . to Flow able ( Back pressure Strategy . BUFFER ) ĊĠĠĠĠĠĠĠ Ġoverride Ġval Ġprogram Field : ĠFlow able < Nullable < Program Model >> Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ_ program Field . to Flow able ( Back pressure Strategy . BUFFER ) ĊĠĠĠĠĠĠĠ Ġoverride Ġval Ġselected SessionId Field : ĠFlow able < Nullable < Int >> Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ_ selected SessionId Field . to Flow able ( Back pressure Strategy . BUFFER ) ĊĠĠĠ Ġ} Ċ }