package Ġcom . am ino graphy . navigation . argument Ċ Ċ import Ġandroid . os . Bundle Ċ import Ġandroid . os . Parcelable Ċ import Ġcom . am ino graphy . navigation . KEY _ NAV _ ARG Ċ import Ġkotlin . reflect . K Class Ċ Ċ /** Ċ Ġ* Ġ@ author Ġa mino graphy Ċ Ġ*/ Ċ class ĠDeep Link Nav Arg Lazy < T Ġ: ĠParcel able >( ĊĠĠĠ Ġprivate Ġval Ġnav Arg Class : ĠK Class < T >, ĊĠĠĠ Ġprivate Ġval Ġargument Producer : Ġ() Ġ-> ĠBundle Ċ ) Ġ: ĠLazy < T > Ġ{ ĊĊĠĠĠ Ġprivate Ġvar Ġcached : ĠT ? Ġ= Ġnull ĊĊĠĠĠ Ġoverride Ġval Ġvalue : ĠT ĊĠĠĠĠĠĠĠ Ġget () Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġvar Ġargs Ġ= Ġcached ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( args Ġ== Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġarguments Ġ= Ġargument Producer () ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ@ Suppress (" UN CHECK ED _ CAST ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġcreator : ĠParcel able . Creator < T >? Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ( creator Map [ nav Arg Class ] Ġas ? ĠParcel able . Creator < T >) Ġ?: Ġrun Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġvar Ġresult : ĠParcel able . Creator < T >? Ġ= Ġnull ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfor Ġ( f Ġin Ġnav Arg Class . java . fields ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( f . get ( Unit ) Ġis ĠParcel able . Creator <* >) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġresult Ġ= Ġf . get ( Unit ) Ġas ĠParcel able . Creator < T > ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcreator Map [ nav Arg Class ] Ġ= Ġresult ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġresult ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġargs Ġ= Ġcreator ?. let Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġarguments . getString ( KEY _ NAV _ ARG )?. decode From Base 6 4 ( it ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ?: Ġthrow ĠIllegalStateException (" The Ġreceived Ġdeep - link Ġhas Ġno Ġarguments !") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġ?: Ġthrow ĠIllegalStateException ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" Class Ġ$ nav Arg Class Ġhas Ġno ĠCRE ATOR Ġobject !" ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcached Ġ= Ġargs ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġargs ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġis Initialized () Ġ= Ġcached Ġ!= Ġnull Ċ } Ċ Ċ internal Ġval Ġcreator Map Ġ= ĠHashMap < K Class < out ĠParcel able >, ĠParcel able . Creator <* >>()