package Ġcom . jetbrains . edu . learning Ċ Ċ sealed Ġclass ĠResult < out ĠT , Ġout ĠE > Ċ data Ġclass ĠOk < out ĠT >( val Ġvalue : ĠT ) Ġ: ĠResult < T , ĠNothing >() Ċ open Ġclass ĠErr < out ĠE >( val Ġerror : ĠE ) Ġ: ĠResult < Nothing , ĠE >() Ċ Ċ fun Ġ< T , ĠS , ĠE > ĠResult < T , ĠE >. map ( func : Ġ( T ) Ġ-> ĠS ): ĠResult < S , ĠE > Ġ{ ĊĠ Ġreturn Ġwhen Ġ( this ) Ġ{ ĊĠĠĠ Ġis ĠErr Ġ-> Ġthis ĊĠĠĠ Ġis ĠOk Ġ-> ĠOk ( func ( value )) ĊĠ Ġ} Ċ } Ċ Ċ fun Ġ< T , ĠS , ĠE > ĠResult < T , ĠE >. flatMap ( func : Ġ( T ) Ġ-> ĠResult < S , ĠE >): ĠResult < S , ĠE > Ġ{ ĊĠ Ġreturn Ġwhen Ġ( this ) Ġ{ ĊĠĠĠ Ġis ĠErr Ġ-> Ġthis ĊĠĠĠ Ġis ĠOk Ġ-> Ġfunc ( value ) ĊĠ Ġ} Ċ } Ċ Ċ inline Ġfun Ġ< T , ĠE > ĠResult < T , ĠE >. onError ( action : Ġ( E ) Ġ-> ĠT ): ĠT { ĊĠ Ġreturn Ġwhen Ġ( this ) Ġ{ ĊĠĠĠ Ġis ĠOk Ġ-> Ġvalue ĊĠĠĠ Ġis ĠErr Ġ-> Ġaction ( error ) ĊĠ Ġ} Ċ }