package Ġcom . sh uh art . test look . utils Ċ Ċ import Ġandroid . os . Bundle Ċ Ċ class ĠSingle Extras < out ĠA >( private Ġval Ġvalue : ĠA ) Ġ{ ĊĊĠĠĠ Ġcompanion Ġobject Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġkey Ġ= Ġ" single _ extras _ key " ĊĊĠĠĠĠĠĠĠ Ġinline Ġfun Ġ< re ified ĠA > Ġread From Bundle ( bundle : ĠBundle ?): ĠA ? Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( bundle Ġ== Ġnull Ġ|| Ġbundle . isEmpty ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġnull ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( bundle . containsKey ( key )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĠGson Utils . deserialize ( bundle . getString ( key ), ĠA :: class . java ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġnull ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġto Bundle (): ĠBundle Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġbundle Ġ= ĠBundle () ĊĠĠĠĠĠĠĠ Ġbundle . putString ( key , ĠGson Utils . serialize ( value )) ĊĠĠĠĠĠĠĠ Ġreturn Ġbundle ĊĠĠĠ Ġ} ĊĊĊĠĠĠ Ġoverride Ġfun ĠtoString (): ĠString Ġ= Ġ" ($ value )" Ċ } Ċ Ċ class ĠPair Extras < out ĠA , Ġout ĠB >( val Ġfirst : ĠA ?, Ġval Ġsecond : ĠB ?) Ġ{ ĊĊĠĠĠ Ġcompanion Ġobject Ġ{ ĊĠĠĠĠĠĠĠ Ġprivate Ġval Ġfirst Key Ġ= Ġ" pair _ extras _ first _ key " ĊĠĠĠĠĠĠĠ Ġprivate Ġval Ġsecond Key Ġ= Ġ" pair _ extras _ second _ key " ĊĊĠĠĠĠĠĠĠ Ġfun Ġ< A , ĠB > Ġread From Bundle ( bundle : ĠBundle ?, Ġclass A : ĠClass < A > ?, Ġclass B : ĠClass < B >? ): ĠPair Extras < A , ĠB > Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( bundle Ġ== Ġnull Ġ|| Ġbundle . isEmpty ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĠPair Extras ( null , Ġnull ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġvar Ġa : ĠA ? Ġ= Ġnull ĊĠĠĠĠĠĠĠĠĠĠĠ Ġvar Ġb : ĠB ? Ġ= Ġnull ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( bundle . containsKey ( first Key ) Ġ&& Ġclass A Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġa Ġ= ĠGson Utils . deserialize ( bundle . getString ( first Key ), Ġclass A ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( bundle . containsKey ( second Key ) Ġ&& Ġclass B Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġb Ġ= ĠGson Utils . deserialize ( bundle . getString ( second Key ), Ġclass B ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĠPair Extras ( a , Ġb ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġto Bundle (): ĠBundle Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġbundle Ġ= ĠBundle () ĊĠĠĠĠĠĠĠ Ġbundle . putString ( first Key , ĠGson Utils . serialize ( first )) ĊĠĠĠĠĠĠĠ Ġbundle . putString ( second Key , ĠGson Utils . serialize ( second )) ĊĠĠĠĠĠĠĠ Ġreturn Ġbundle ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoperator Ġfun Ġcomponent 1 () Ġ= Ġfirst ĊĊĠĠĠ Ġoperator Ġfun Ġcomponent 2 () Ġ= Ġsecond ĊĊĊĠĠĠ Ġoverride Ġfun ĠtoString (): ĠString Ġ= Ġ" ($ first , Ġ$ second )" Ċ }