package Ġcom . example . android temp lated sl . data . remote . factory Ċ Ċ sealed Ġclass ĠNetwork Response < out ĠT Ġ: ĠAny , Ġout ĠU Ġ: ĠAny > Ġ{ ĊĊĠĠĠ Ġdata Ġclass ĠLoading ( val Ġstart : ĠInt Ġ= Ġ 0 ) Ġ: ĠNetwork Response < Nothing , ĠNothing >() ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠA Ġrequest Ġthat Ġresulted Ġin Ġa Ġresponse Ġwith Ġa Ġ 2 xx Ġstatus Ġcode Ġthat Ġhas Ġa Ġbody . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġdata Ġclass ĠSuccess < T Ġ: ĠAny >( ĊĠĠĠĠĠĠĠ Ġval Ġbody : ĠT ĊĠĠĠ Ġ) Ġ: ĠNetwork Response < T , ĠNothing >() ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠA Ġrequest Ġthat Ġresulted Ġin Ġa Ġresponse Ġwith Ġa Ġnon - 2 xx Ġstatus Ġcode . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġdata Ġclass ĠError < U Ġ: ĠAny >( ĊĠĠĠĠĠĠĠ Ġval Ġbody : ĠU ? Ġ= Ġnull , ĊĠĠĠĠĠĠĠ Ġval Ġerror : ĠThrowable ?, ĊĠĠĠĠĠĠĠ Ġval Ġcode : ĠInt , ĊĠĠĠĠĠĠĠ Ġval Ġtype : ĠError Type ĊĠĠĠ Ġ) Ġ: ĠNetwork Response < Nothing , ĠU >() ĊĊĠĠĠ Ġenum Ġclass ĠError Type Ġ{ ĊĠĠĠĠĠĠĠ ĠSERVER , ĊĠĠĠĠĠĠĠ ĠNET WORK , ĊĠĠĠĠĠĠĠ ĠUNKNOWN ĊĠĠĠ Ġ} Ċ } Ċ Ċ /** Ċ Ġ* Ġ` true ` Ġif Ġ[ Result ] Ġis Ġof Ġtype Ġ[ Success ] Ġ& Ġholds Ġnon - null Ġ[ Success . data ]. Ċ Ġ*/ Ċ val ĠNetwork Response < *, * >. succeeded ĊĠĠĠ Ġget () Ġ= Ġthis Ġis ĠNetwork Response . Success Ċ Ċ fun Ġ< T Ġ: ĠAny > ĠNetwork Response < T , Any >. success Or ( fallback : ĠT ): ĠT Ġ{ ĊĠĠĠ Ġreturn Ġ( this Ġas ? ĠNetwork Response . Success <* >) ?. body Ġas ĠT ? Ġ?: Ġfallback Ċ } Ċ Ċ val Ġ< T Ġ: ĠAny > ĠNetwork Response < T , Any >. data : ĠT ? ĊĠĠĠ Ġget () Ġ= Ġ( this Ġas ? ĠNetwork Response . Success )?. body