// ĠOriginal Ġbug : ĠK T - 3 4 9 2 4 Ċ Ċ package Ġcom . f az t udo . common . domain Ċ Ċ sealed Ġclass ĠResource < out ĠT Ġ: ĠAny >( open Ġval Ġdata : ĠT ?) Ġ{ ĊĠĠĠ Ġdata Ġclass ĠSuccess < out ĠT Ġ: ĠAny >( override Ġval Ġdata : ĠT ) Ġ: ĠResource < T >( data ) ĊĠĠĠ Ġdata Ġclass ĠLoading < out ĠT Ġ: ĠAny >( override Ġval Ġdata : ĠT ? Ġ= Ġnull ) Ġ: ĠResource < T >( data ) ĊĠĠĠ Ġdata Ġclass ĠFailure < out ĠT Ġ: ĠAny >( override Ġval Ġdata : ĠT ? Ġ= Ġnull , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġexception : ĠException ) Ġ: ĠResource < T >( data ) ĊĊĠĠĠ Ġfun ĠonSuccess ( on Success : Ġ( data : ĠT ) Ġ-> ĠUnit ) Ġ= Ġthis . also Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( this Ġis ĠSuccess ) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠonSuccess ( data ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġon Loading ( on Loading : Ġ( data : ĠT ?) Ġ-> ĠUnit ) Ġ= Ġthis . also Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( this Ġis ĠLoading ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġon Loading ( data ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġon Failure ( on Failure : Ġ( data : ĠT ?, Ġexception : ĠException ) Ġ-> ĠUnit ) Ġ= Ġthis . also Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( this Ġis ĠFailure ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġon Failure ( data , Ġexception ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġ< Y Ġ: ĠAny > Ġmap Resource ( transform : Ġ( T ) Ġ-> ĠY ): ĠResource < Y > Ġ= Ġtry Ġ{ Ċ // ĠĠĠĠĠĠĠ Ġlog d (" map Resource ", Ġ" Con verting Ġ$ this Ġfrom Ġtype Ġ${ X :: class . java } Ġto Ġ${ Y :: class . java }") ĊĠĠĠĠĠĠĠ Ġwhen Ġ( this ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġis ĠSuccess < T > Ġ-> ĠSuccess < Y >( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtransform ( data ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġis ĠLoading < T > Ġ-> ĠLoading < Y >( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdata ?. let Ġ{ Ġtransform ( it ) Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġis ĠFailure < T > Ġ-> ĠFailure < Y >( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdata ?. let Ġ{ Ġtransform ( it ) Ġ}, ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġexception ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ġcatch Ġ( e : ĠThrowable ) Ġ{ Ċ // ĠĠĠĠĠĠĠ ĠLog . e (" map Resource ", Ġ" Failed Ġto Ġconvert Ġ$ this Ġfrom Ġtype Ġ${ X :: class . java } Ġto Ġ${ Y :: class . java }", Ġe ) ĊĠĠĠĠĠĠĠ ĠFailure < Y >( data ?. let Ġ{ Ġtransform ( it ) Ġ}, ĠException ( e )) ĊĠĠĠ Ġ} Ċ Ċ } Ċ