package Ġcom . github . double death . android . mv vm . impl Ċ Ċ import Ġandroid . app . FragmentManager Ċ import Ġandroid . databinding . Data Binding Util Ċ import Ġandroid . databinding . ViewData Binding Ċ import Ġandroid . view . LayoutInflater Ċ import Ġcom . github . double death . android . mv vm . Mv vm Facade Ċ import Ġcom . github . double death . android . mv vm . base . Mv vm Base Delegate Ċ import Ġcom . github . double death . android . mv vm . base . Mv vm Base Fragment Ċ import Ġkotlin . reflect . K Class Ċ Ċ @ Suppress (" UN CHECK ED _ CAST ") Ċ internal Ġclass ĠM v vm Fragment Delegate < VM Ġ: ĠM v vm Fragment ViewModel , ĠB Ġ: ĠView Data Binding , ĠF Ġ: ĠM v vm Base Fragment < VM , ĠB >> Ċ /* constructor */ ( private Ġval Ġfragment : ĠF , Ġnavigator : ĠM v vm Activity Navigator ) Ġ: ĠM v vm Base Delegate < VM , ĠB , ĠFragment Manager > Ċ /* super . constructor */ ( Mv vm Facade . view Mapper . to ViewModel ( fragment :: class ) Ġas ĠK Class < VM >, Ġnavigator ) Ġ{ ĊĊĠĠĠ Ġprivate Ġvar Ġbinding : ĠB ? Ġ= Ġnull ĊĠĠĠ Ġprivate Ġvar Ġcontext : ĠFragment Manager ? Ġ= Ġnull ĊĊĠĠĠ Ġoverride Ġfun Ġbinding (): ĠB Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġbinding Ġ= Ġbinding Ġ?: ĠData Binding Util . inflate ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠLayoutInflater . from ( fragment . activity ), Ġfragment . provided Layout Id , Ġnull , Ġfalse ) ĊĊĠĠĠĠĠĠĠ Ġif Ġ( this . binding Ġ=== Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġbinding . set Variable ( fragment . provided ViewModel Id , ĠviewModel ()) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġthis . binding Ġ= Ġbinding ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġreturn Ġbinding ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġcontext (): ĠFragment Manager Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġcontext Ġ= Ġcontext Ġ?: Ġfragment . fragment Manager ĊĊĠĠĠĠĠĠĠ Ġif Ġ( this . context Ġ=== Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġthis . context Ġ= Ġcontext ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġreturn Ġcontext ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Destroy () Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( fragment . is Removing Ġ|| Ġfragment . activity . is Finish ing ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġsuper . on Destroy () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ Ċ } Ċ