package Ġcom . example . databind ings ample . domain . base Ċ Ċ sealed Ġclass ĠResult < out ĠS , Ġout ĠT > Ġ{ ĊĠĠĠ Ġdata Ġclass ĠError < out ĠE >( val Ġerror : ĠE ) Ġ: ĠResult < E , ĠNothing >() ĊĠĠĠ Ġdata Ġclass ĠSuccess < out ĠV >( val Ġvalue : ĠV ) Ġ: ĠResult < Nothing , ĠV >() ĊĊĠĠĠ Ġval Ġis Error Ġget () Ġ= Ġthis Ġis ĠError < S > ĊĠĠĠ Ġval Ġis Success Ġget () Ġ= Ġthis Ġis ĠSuccess < T > ĊĊĠĠĠ Ġfun Ġ< E > Ġerror ( error : ĠE ) Ġ= ĠError ( error ) ĊĠĠĠ Ġfun Ġ< V > Ġsuccess ( value : ĠV ) Ġ= ĠSuccess ( value ) ĊĊĠĠĠĠ Ġfun Ġresult ( result Success : Ġ( T ) Ġ-> ĠUnit , Ġresult Error : Ġ( S ) Ġ-> ĠUnit ): ĠAny Ġ= ĊĠĠĠĠĠĠĠ Ġwhen Ġ( this ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġis ĠSuccess Ġ-> Ġresult Success ( value ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġis ĠError Ġ-> Ġresult Error ( error ) ĊĠĠĠĠĠĠĠ Ġ} Ċ } Ċ Ċ fun Ġ< S , ĠT > ĠResult < S , ĠT >. error Result (): ĠS ? Ġ= Ġwhen Ġ( this ) Ġ{ ĊĠĠĠ Ġis ĠResult . Error < S > Ġ-> Ġthis . error ĊĠĠĠ Ġelse Ġ-> Ġnull Ċ } Ċ Ċ fun Ġ< S , ĠT > ĠResult < S , ĠT >. success Result (): ĠT ? Ġ= Ġwhen Ġ( this ) Ġ{ ĊĠĠĠ Ġis ĠResult . Success < T > Ġ-> Ġthis . value ĊĠĠĠ Ġelse Ġ-> Ġnull Ċ } Ċ Ċ suspend Ġfun Ġ< S > Ġeither ( executable Block : Ġsuspend Ġ() Ġ-> ĠS ): ĠResult < Throwable , ĠS > Ġ= Ġrun Catch ing Ġ{ ĊĠĠĠ ĠResult . Success ( executable Block ()) Ċ }. getOrElse Ġ{ ĠResult . Error ( it ) Ġ} Ċ