@ file : Suppress (" unused ") Ċ Ċ package Ġorg . rew ed ig ital . kat ana . android x . view model . saved state Ċ Ċ import Ġandroid . os . Bundle Ċ import Ġandroidx . fragment . app . Fragment Ċ import Ġandroidx . fragment . app . Fragment Activity Ċ import Ġandroidx . lifecycle .* Ċ import Ġandroidx . saved state . Saved State Registry Owner Ċ import Ġorg . rew ed ig ital . kat ana .* Ċ import Ġorg . rew ed ig ital . kat ana . android x . view model . internal . viewModel Name Ċ import Ġorg . rew ed ig ital . kat ana . android x . view model . saved state . Saved State ViewModel K at ana Provider . Arg Ċ import Ġorg . rew ed ig ital . kat ana . dsl . Provider Dsl Ċ import Ġorg . rew ed ig ital . kat ana . dsl . custom Ċ Ċ internal Ġclass ĠK at ana Saved State ViewModel Factory ( ĊĠĠĠ Ġowner : ĠSaved State Registry Owner , ĊĠĠĠ Ġdefault Args : ĠBundle ?, ĊĠĠĠ Ġprivate Ġval ĠviewModel Provider : Ġ( state : ĠSaved State Handle ) Ġ-> ĠViewModel Ċ ) Ġ: ĠAbstract Saved State ViewModel Factory ( owner , Ġdefault Args ) Ġ{ ĊĊĠĠĠ Ġ@ Suppress (" UN CHECK ED _ CAST ") ĊĠĠĠ Ġoverride Ġfun Ġ< VM Ġ: ĠViewModel > Ġcreate ( key : ĠString , Ġmodel Class : ĠClass < VM >, Ġhandle : ĠSaved State Handle ): ĠVM Ġ= ĊĠĠĠĠĠĠĠ ĠviewModel Provider ( handle ) Ġas ĠVM Ċ } Ċ Ċ internal Ġobject ĠInternal Saved State ViewModel Provider Ġ{ ĊĊĠĠĠ Ġfun Ġ< VM Ġ: ĠViewModel > Ġof ( ĊĠĠĠĠĠĠĠ ĠviewModel Store Owner : ĠViewModel Store Owner , ĊĠĠĠĠĠĠĠ Ġsaved State Registry Owner : ĠSaved State Registry Owner , ĊĠĠĠĠĠĠĠ Ġkey : ĠString ?, ĊĠĠĠĠĠĠĠ Ġdefault Args : ĠBundle ?, ĊĠĠĠĠĠĠĠ ĠviewModel Class : ĠClass < VM >, ĊĠĠĠĠĠĠĠ ĠviewModel Provider : Ġ( state : ĠSaved State Handle ) Ġ-> ĠViewModel ĊĠĠĠ Ġ) Ġ= ĊĠĠĠĠĠĠĠ ĠViewModel Provider ( ĊĠĠĠĠĠĠĠĠĠĠĠ ĠviewModel Store Owner , ĊĠĠĠĠĠĠĠĠĠĠĠ ĠK at ana Saved State ViewModel Factory ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsaved State Registry Owner , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdefault Args , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠviewModel Provider ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġ). internal Get ( key , ĠviewModel Class ) ĊĊĠĠĠ Ġprivate Ġfun Ġ< VM Ġ: ĠViewModel > ĠViewModel Provider . internal Get ( key : ĠString ?, ĠviewModel Class : ĠClass < VM >) Ġ= ĊĠĠĠĠĠĠĠ Ġif Ġ( key Ġ== Ġnull ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġget ( viewModel Class ) ĊĠĠĠĠĠĠĠ Ġelse ĊĠĠĠĠĠĠĠĠĠĠĠ Ġget ( key , ĠviewModel Class ) Ċ } Ċ Ċ @ Published Api Ċ internal Ġclass ĠSaved State ViewModel K at ana Provider < VM Ġ: ĠViewModel >( ĊĠĠĠ Ġprivate Ġval Ġbody : ĠProvider Dsl .( state : ĠSaved State Handle ) Ġ-> ĠVM , ĊĠĠĠ Ġprivate Ġval Ġdefault Args : ĠBundle ?, ĊĠĠĠ Ġprivate Ġval ĠviewModel Class : ĠClass < VM > Ċ ) Ġ: ĠProvider < VM > Ġ{ ĊĊĠĠĠ Ġdata Ġclass ĠArg ( ĊĠĠĠĠĠĠĠ Ġval Ġkey : ĠString ?, ĊĠĠĠĠĠĠĠ Ġval ĠviewModel Store Owner : ĠViewModel Store Owner , ĊĠĠĠĠĠĠĠ Ġval Ġsaved State Registry Owner : ĠSaved State Registry Owner ĊĠĠĠ Ġ) ĊĊĠĠĠ Ġoverride Ġoperator Ġfun Ġinvoke ( context : ĠComponent Context , Ġarg : ĠAny ?): ĠVM Ġ= ĊĠĠĠĠĠĠĠ Ġwhen Ġ( arg ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġis ĠArg Ġ-> ĠInternal Saved State ViewModel Provider . of ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠviewModel Store Owner Ġ= Ġarg . viewModel Store Owner , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsaved State Registry Owner Ġ= Ġarg . saved State Registry Owner , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġkey Ġ= Ġarg . key , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdefault Args Ġ= Ġdefault Args , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠviewModel Class Ġ= ĠviewModel Class , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠviewModel Provider Ġ= Ġ{ Ġstate Ġ-> Ġbody . invoke ( Provider Dsl ( context ), Ġstate ) Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ-> Ġthrow ĠK at ana Exception ( message Ġ= Ġ" Unknown Ġargument Ġpassed Ġto ĠSaved State ViewModel K at ana Provider ") ĊĠĠĠĠĠĠĠ Ġ} Ċ } Ċ Ċ // < editor - fold Ġdesc =" Module ĠDSL "> Ċ /** Ċ Ġ* ĠDe cla res Ġa Ġ[ ViewModel ] Ġdependency Ġbinding Ġwith Ġa Ġ[ Saved State Handle ]. Ċ Ġ* Ċ Ġ* ĠThe Ġsaved Ġstate Ġis Ġpassed Ġto Ġthe Ġprovider Ġbody Ġas Ġan Ġargument Ġwhich Ġthen Ġcan Ġbe Ġpassed Ġto Ġthe ĠViewModel Ġinstance Ċ Ġ* Ġwhen Ġcreated . Ċ Ġ* Ċ Ġ* Ġ@ param Ġkey ĠOptional Ġkey Ġas Ġrequired Ġfor Ġ` ViewModel Provider . get ( String , ĠClass )` Ċ Ġ* Ġ@ param Ġdefault Args ĠOptional Ġdefault Ġargs Ġthat Ġare Ġpassed Ġto Ġ[ Abstract Saved State ViewModel Factory ] Ċ Ġ*/ Ċ inline Ġfun Ġ< re ified ĠVM Ġ: ĠViewModel > ĠModule Binding Context . viewModel Saved State ( ĊĠĠĠ Ġkey : ĠString ? Ġ= Ġnull , ĊĠĠĠ Ġdefault Args : ĠBundle ? Ġ= Ġnull , ĊĠĠĠ Ġno inline Ġbody : ĠProvider Dsl .( state : ĠSaved State Handle ) Ġ-> ĠVM Ċ ) Ġ= ĊĠĠĠ Ġcustom ( ĊĠĠĠĠĠĠĠ Ġname Ġ= ĠviewModel Name ( model Class Ġ= ĠVM :: class . java , Ġkey Ġ= Ġkey ), ĊĠĠĠĠĠĠĠ Ġprovider Ġ= ĠSaved State ViewModel K at ana Provider ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġbody Ġ= Ġbody , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdefault Args Ġ= Ġdefault Args , ĊĠĠĠĠĠĠĠĠĠĠĠ ĠviewModel Class Ġ= ĠVM :: class . java ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠ Ġ) Ċ Ċ /** Ċ Ġ* ĠProvides Ġ[ ViewModel ] Ġinstance Ġwith Ġa Ġ[ Saved State Handle ] Ġdeclared Ġin Ġcurrent Ġinjection Ġcontext . Ċ Ġ*/ Ċ inline Ġfun Ġ< re ified ĠVM Ġ: ĠViewModel , ĠOWNER > ĠProvider Dsl . viewModel Saved State ( owner : ĠOWNER , Ġkey : ĠString ? Ġ= Ġnull ) ĊĠĠĠĠĠĠĠ Ġwhere ĠOWNER Ġ: ĠViewModel Store Owner , ĠOWNER Ġ: ĠSaved State Registry Owner Ġ= ĊĠĠĠ Ġcontext . custom < VM >( ĊĠĠĠĠĠĠĠ Ġname Ġ= ĠviewModel Name ( VM :: class . java , Ġkey ), ĊĠĠĠĠĠĠĠ Ġarg Ġ= ĠArg ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġkey Ġ= Ġkey , ĊĠĠĠĠĠĠĠĠĠĠĠ ĠviewModel Store Owner Ġ= Ġowner , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġsaved State Registry Owner Ġ= Ġowner ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠ Ġ) Ċ Ċ /** Ċ Ġ* ĠProvides Ġ[ Fragment ] Ġ[ ViewModel ] Ġinstance Ġwith Ġa Ġ[ Saved State Handle ] Ġscoped Ġto Ġits Ġ[ Fragment Activity ] Ġdeclared Ġin Ġcurrent Ġinjection Ġcontext . Ċ Ġ*/ Ċ inline Ġfun Ġ< re ified ĠVM Ġ: ĠViewModel > ĠProvider Dsl . activity ViewModel Saved State ( fragment : ĠFragment , Ġkey : ĠString ? Ġ= Ġnull ) Ġ= ĊĠĠĠ ĠviewModel Saved State < VM , ĠFragment Activity >( owner Ġ= Ġfragment . require Activity (), Ġkey Ġ= Ġkey ) Ċ // </ editor - fold > Ċ Ċ // < editor - fold Ġdesc =" Injection Ġextension Ġfunctions "> Ċ /** Ċ Ġ* ĠIm mediate ly Ġinject s Ġ[ ViewModel ] Ġwith Ġa Ġ[ Saved State Handle ]. Ċ Ġ* Ċ Ġ* Ġ@ param Ġkey ĠOptional Ġkey Ġas Ġrequired Ġfor Ġ` ViewModel Provider . get ( String , ĠClass )` Ċ Ġ* Ċ Ġ* Ġ@ see ĠModule Binding Context . viewModel Saved State Ċ Ġ*/ Ċ inline Ġfun Ġ< re ified ĠVM Ġ: ĠViewModel , ĠOWNER > ĠComponent . viewModel Saved State Now ( owner : ĠOWNER , Ġkey : ĠString ? Ġ= Ġnull ) ĊĠĠĠĠĠĠĠ Ġwhere ĠOWNER Ġ: ĠViewModel Store Owner , ĠOWNER Ġ: ĠSaved State Registry Owner Ġ= ĊĠĠĠ Ġcustom < VM >( ĊĠĠĠĠĠĠĠ Ġname Ġ= ĠviewModel Name ( VM :: class . java , Ġkey ), ĊĠĠĠĠĠĠĠ Ġarg Ġ= ĠArg ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġkey Ġ= Ġkey , ĊĠĠĠĠĠĠĠĠĠĠĠ ĠviewModel Store Owner Ġ= Ġowner , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġsaved State Registry Owner Ġ= Ġowner ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠ Ġ) Ċ Ċ @ Published Api Ċ internal Ġinline Ġfun Ġ< re ified ĠVM Ġ: ĠViewModel , ĠOWNER > ĠComponent . internal ViewModel Saved State ( ĊĠĠĠ Ġno inline Ġowner Provider : Ġ() Ġ-> ĠOWNER , ĊĠĠĠ Ġkey : ĠString ? Ġ= Ġnull Ċ ) Ġwhere ĠOWNER Ġ: ĠViewModel Store Owner , ĠOWNER Ġ: ĠSaved State Registry Owner Ġ= ĊĠĠĠ Ġlazy Ġ{ ĠviewModel Saved State Now < VM , ĠOWNER >( owner Provider (), Ġkey ) Ġ} Ċ Ċ /** Ċ Ġ* ĠInject s Ġ[ ViewModel ] Ġwith Ġa Ġ[ Saved State Handle ]. Ċ Ġ* Ċ Ġ* Ġ@ param Ġkey ĠOptional Ġkey Ġas Ġrequired Ġfor Ġ` ViewModel Provider . get ( String , ĠClass )` Ċ Ġ* Ċ Ġ* Ġ@ see ĠModule Binding Context . viewModel Saved State Ċ Ġ*/ Ċ inline Ġfun Ġ< re ified ĠVM Ġ: ĠViewModel , ĠOWNER > ĠComponent . viewModel Saved State ( owner : ĠOWNER , Ġkey : ĠString ? Ġ= Ġnull ) ĊĠĠĠĠĠĠĠ Ġwhere ĠOWNER Ġ: ĠViewModel Store Owner , ĠOWNER Ġ: ĠSaved State Registry Owner Ġ= ĊĠĠĠ Ġinternal ViewModel Saved State < VM , ĠOWNER >( owner Provider Ġ= Ġ{ Ġowner Ġ}, Ġkey Ġ= Ġkey ) Ċ Ċ /** Ċ Ġ* ĠIm mediate ly Ġinject s Ġ[ ViewModel ] Ġwith Ġa Ġ[ Saved State Handle ] Ġof Ġcurrent Ġowner Ġimplementing Ġ[ K at ana Trait ] Ġinterface . Ċ Ġ* Ċ Ġ* Ġ@ param Ġkey ĠOptional Ġkey Ġas Ġrequired Ġfor Ġ` ViewModel Provider . get ( String , ĠClass )` Ċ Ġ* Ċ Ġ* Ġ@ see ĠModule Binding Context . viewModel Saved State Ċ Ġ*/ Ċ inline Ġfun Ġ< re ified ĠVM Ġ: ĠViewModel , ĠT > ĠT . viewModel Saved State Now ( key : ĠString ? Ġ= Ġnull ) ĊĠĠĠĠĠĠĠ Ġwhere ĠT Ġ: ĠK at ana Trait , ĠT Ġ: ĠViewModel Store Owner , ĠT Ġ: ĠSaved State Registry Owner Ġ= ĊĠĠĠ Ġcomponent . viewModel Saved State Now < VM , ĠT >( this , Ġkey ) Ċ Ċ /** Ċ Ġ* ĠInject s Ġ[ ViewModel ] Ġwith Ġa Ġ[ Saved State Handle ] Ġof Ġcurrent Ġowner Ġimplementing Ġ[ K at ana Trait ] Ġinterface . Ċ Ġ* Ċ Ġ* Ġ@ param Ġkey ĠOptional Ġkey Ġas Ġrequired Ġfor Ġ` ViewModel Provider . get ( String , ĠClass )` Ċ Ġ* Ċ Ġ* Ġ@ see ĠModule Binding Context . viewModel Saved State Ċ Ġ*/ Ċ inline Ġfun Ġ< re ified ĠVM Ġ: ĠViewModel , ĠT > ĠT . viewModel Saved State ( key : ĠString ? Ġ= Ġnull ) ĊĠĠĠĠĠĠĠ Ġwhere ĠT Ġ: ĠK at ana Trait , ĠT Ġ: ĠViewModel Store Owner , ĠT Ġ: ĠSaved State Registry Owner Ġ= ĊĠĠĠ Ġcomponent . viewModel Saved State < VM , ĠT >( this , Ġkey ) Ċ Ċ /** Ċ Ġ* ĠIm mediate ly Ġinject s Ġ[ ViewModel ] Ġwith Ġa Ġ[ Saved State Handle ] Ġof Ġspecified Ġ[ Fragment ] Ġscoped Ġto Ġits Ġ[ Fragment Activity ]. Ċ Ġ* Ċ Ġ* Ġ@ param Ġkey ĠOptional Ġkey Ġas Ġrequired Ġfor Ġ` ViewModel Provider . get ( String , ĠClass )` Ċ Ġ* Ċ Ġ* Ġ@ see ĠModule Binding Context . viewModel Saved State Ċ Ġ*/ Ċ inline Ġfun Ġ< re ified ĠVM Ġ: ĠViewModel > ĠComponent . activity ViewModel Saved State Now ( fragment : ĠFragment , Ġkey : ĠString ? Ġ= Ġnull ) Ġ= ĊĠĠĠ ĠviewModel Saved State Now < VM , ĠFragment Activity >( ĊĠĠĠĠĠĠĠ Ġowner Ġ= Ġfragment . require Activity (), ĊĠĠĠĠĠĠĠ Ġkey Ġ= Ġkey ĊĠĠĠ Ġ) Ċ Ċ /** Ċ Ġ* ĠInject s Ġ[ ViewModel ] Ġwith Ġa Ġ[ Saved State Handle ] Ġof Ġspecified Ġ[ Fragment ] Ġscoped Ġto Ġits Ġ[ Fragment Activity ]. Ċ Ġ* Ċ Ġ* Ġ@ param Ġkey ĠOptional Ġkey Ġas Ġrequired Ġfor Ġ` ViewModel Provider . get ( String , ĠClass )` Ċ Ġ* Ċ Ġ* Ġ@ see ĠModule Binding Context . viewModel Saved State Ċ Ġ*/ Ċ inline Ġfun Ġ< re ified ĠVM Ġ: ĠViewModel > ĠComponent . activity ViewModel Saved State ( fragment : ĠFragment , Ġkey : ĠString ? Ġ= Ġnull ) Ġ= ĊĠĠĠ Ġinternal ViewModel Saved State < VM , ĠFragment Activity >( ĊĠĠĠĠĠĠĠ Ġowner Provider Ġ= Ġ{ Ġfragment . require Activity () Ġ}, ĊĠĠĠĠĠĠĠ Ġkey Ġ= Ġkey ĊĠĠĠ Ġ) Ċ Ċ /** Ċ Ġ* ĠIm mediate ly Ġinject s Ġ[ ViewModel ] Ġwith Ġa Ġ[ Saved State Handle ] Ġof Ġcurrent Ġ[ Fragment ] Ġimplementing Ġ[ K at ana Trait ] Ġscoped Ġto Ġits Ġ[ Fragment Activity ]. Ċ Ġ* Ċ Ġ* Ġ@ param Ġkey ĠOptional Ġkey Ġas Ġrequired Ġfor Ġ` ViewModel Provider . get ( String , ĠClass )` Ċ Ġ* Ċ Ġ* Ġ@ see ĠModule Binding Context . viewModel Saved State Ċ Ġ*/ Ċ inline Ġfun Ġ< re ified ĠVM Ġ: ĠViewModel , ĠT > ĠT . activity ViewModel Saved State Now ( key : ĠString ? Ġ= Ġnull ) Ġwhere ĠT Ġ: ĠK at ana Trait , ĠT Ġ: ĠFragment Ġ= ĊĠĠĠ Ġcomponent . viewModel Saved State Now < VM , ĠFragment Activity >( owner Ġ= Ġrequire Activity (), Ġkey Ġ= Ġkey ) Ċ Ċ /** Ċ Ġ* ĠInject s Ġ[ ViewModel ] Ġwith Ġa Ġ[ Saved State Handle ] Ġof Ġcurrent Ġ[ Fragment ] Ġimplementing Ġ[ K at ana Trait ] Ġscoped Ġto Ġits Ġ[ Fragment Activity ]. Ċ Ġ* Ċ Ġ* Ġ@ param Ġkey ĠOptional Ġkey Ġas Ġrequired Ġfor Ġ` ViewModel Provider . get ( String , ĠClass )` Ċ Ġ* Ċ Ġ* Ġ@ see ĠModule Binding Context . viewModel Saved State Ċ Ġ*/ Ċ inline Ġfun Ġ< re ified ĠVM Ġ: ĠViewModel , ĠT > ĠT . activity ViewModel Saved State ( key : ĠString ? Ġ= Ġnull ) Ġwhere ĠT Ġ: ĠK at ana Trait , ĠT Ġ: ĠFragment Ġ= ĊĠĠĠ Ġcomponent . internal ViewModel Saved State < VM , ĠFragment Activity >( ĊĠĠĠĠĠĠĠ Ġowner Provider Ġ= Ġ{ Ġrequire Activity () Ġ}, ĊĠĠĠĠĠĠĠ Ġkey Ġ= Ġkey ĊĠĠĠ Ġ) Ċ // < editor - fold > Ċ