package Ġio . reactivex . cache Ċ Ċ import Ġio . reactivex . Observable Ċ import Ġio . reactivex . Observable Source Ċ Ċ class ĠCache Result < T >( var Ġresult : ĠT , Ġvar Ġkey : ĠAny , Ġvar Ġtype : ĠCache Type ) Ġ{ ĊĠĠĠ Ġenum Ġclass ĠCache Type Ġ{ ĊĠĠĠĠĠĠĠ ĠNET WORK , ĠCACHE ĊĠĠĠ Ġ} Ċ } Ċ Ċ enum Ġclass ĠType Ġ{ ĊĠĠĠ ĠCACHE _ NETWORK , ĠNET WORK Ċ } Ċ Ċ interface ĠCustom ize Transformer Call < T > Ġ{ ĊĠĠĠ Ġfun Ġapply Custom ize ( key : ĠAny , Ġupstream : ĠObservable < T >): ĠObservable Source < Cache Result < T >> Ċ } Ċ Ċ class ĠSimple Custom ize Transformer Call Kt < T > Ġ{ ĊĊĠĠĠ Ġprivate Ġvar Ġapply Custom ize : Ġ(( key : ĠAny , Ġupstream : ĠObservable < T >) Ġ-> ĠObservable Source < Cache Result < T >> )? Ġ= Ġnull ĊĊĠĠĠ Ġfun Ġapply Custom ize ( apply Custom ize : Ġ( key : ĠAny , Ġupstream : ĠObservable < T >) Ġ-> ĠObservable Source < Cache Result < T >>) Ġ{ ĊĠĠĠĠĠĠĠ Ġthis . apply Custom ize Ġ= Ġapply Custom ize ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġinternal Ġfun Ġbuild (): ĠCustom ize Transformer Call < T > Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġobject Ġ: ĠCustom ize Transformer Call < T > Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġapply Custom ize ( key : ĠAny , Ġupstream : ĠObservable < T >): ĠObservable Source < Cache Result < T >> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġapply Custom ize ?. invoke ( key , Ġupstream ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ?: Ġthrow Ġ ĠKotlin NullPointerException (" check Ġapply Custom ize ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ } ĊĊ