package Ġcom . github . func zz . kotlin . result Ċ Ċ import Ġjava . io . Serializable Ċ import Ġjava . util .* Ċ Ċ /** Ċ Ġ* ĠRo Result ĠãĤ · ãĥ¼ãĥ« ãĥī ãĤ¯ãĥ©ãĤ¹ : Ċ Ġ* Ġ å®Ł è£ħ ãĤ¯ãĥ©ãĤ¹ ãģ« ĠFailure Ġãģ¨ ĠSuccess ĠãĤĴ æĮģ ãģ¤ ãĢĤ Ċ Ġ*/ Ċ sealed Ġclass ĠRo Result < T Ġ: ĠAny > Ġ: ĠSerializable Ġ{ ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠFailure Ġ ãģĭ ãģ© ãģĨ ãģĭ ãĤĴ è¿Ķ ãģĻ ãĢĤ ĊĠĠĠĠ Ġ* Ġ@ return ĠFailure Ġ ãģª ãĤī Ġtrue ãĢģ ĊĠĠĠĠ Ġ* ĠĠĠĠĠĠĠĠ ĠSuccess Ġ ãģª ãĤī Ġfalse ãĢĤ ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġval Ġis Failure : ĠBoolean ĊĠĠĠĠĠĠĠ Ġget () Ġ= Ġthis Ġis ĠFailure ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠSuccess Ġ ãģĭ ãģ© ãģĨ ãģĭ ãĤĴ è¿Ķ ãģĻ ãĢĤ ĊĠĠĠĠ Ġ* Ġ@ return ĠSuccess Ġ ãģª ãĤī Ġtrue ãĢģ ĊĠĠĠĠ Ġ* ĠĠĠĠĠĠĠĠ ĠFailure Ġ ãģª ãĤī Ġfalse ãĢĤ ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġval Ġis Success : ĠBoolean ĊĠĠĠĠĠĠĠ Ġget () Ġ= Ġthis Ġis ĠSuccess ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠSuccess Ġãģ® åĢ¤ ãĤĴ è¿Ķ ãģĻ ãĢĤ ĊĠĠĠĠ Ġ* Ġ@ param Ġfn Ġ å¼ķ æķ° ãģ« ĠThrowable ĠãĤĴ æĮģ ãģ¡ ãĢģ åŀĭ ĠT ĠãĤĴ è¿Ķ ãģĻ éĸ¢æķ° ĊĠĠĠĠ Ġ* Ġ@ return ĠSuccess Ġ ãģª ãĤī ĠSuccess Ġ åĢ¤ ãĢģ ĊĠĠĠĠ Ġ* ĠĠĠĠĠĠĠĠ ĠFailure Ġ ãģª ãĤī Ġ éĸ¢æķ° Ġfn Ġãģ® æĪ » ãĤĬ åĢ¤ ãĢĤ ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġabstract Ġfun Ġget OrElse ( fn : Ġ( Throwable ) Ġ-> ĠT ): ĠT ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠSuccess Ġãģ® åĢ¤ ãĤĴ è¿Ķ ãģĻ ãĢĤ ĊĠĠĠĠ Ġ* Ġ@ return ĠSuccess Ġ ãģª ãĤī ĠSuccess Ġãģ® Ġ åĢ¤ ãĢģ ĊĠĠĠĠ Ġ* ĠĠĠĠĠĠĠĠ ĠFailure Ġ ãģª ãĤī Ġnull ĠãĢĤ ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġabstract Ġfun Ġget OrNull (): ĠT ? ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠSuccess Ġãģ® åĢ¤ ãĤĴ è¿Ķ ãģĻ ãĢĤ ĊĠĠĠĠ Ġ* Ġ@ return ĠSuccess Ġ ãģª ãĤī ĠSuccess Ġãģ® Ġ åĢ¤ ãĢģ ĊĠĠĠĠ Ġ* ĠĠĠĠĠĠĠĠ ĠFailure Ġ ãģª ãĤī Ġ< code > Ro Result Exception </ code > ĠãĤĴ ãĤ¹ ãĥŃ ãĥ¼ ãĢĤ ĊĠĠĠĠ Ġ* Ġ@ throws ĠRo Result Exception ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġabstract Ġfun Ġget OrThrow (): ĠT ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠSuccess Ġ ãģĭ ãģ¤ éĸ¢æķ° Ġfn Ġãģ® æĪ » ãĤĬ åĢ¤ ãģĮ Ġtrue Ġ ãģª ãĤī ĠSuccess ĠãĤĴ è¿Ķ ãģĹ ãĢģ ĊĠĠĠĠ Ġ* Ġ ãģĿãĤĮ ä»¥ å¤ĸ ãģ¯ ĠFailure ĠãĤĴ è¿Ķ ãģĻ ãĢĤ ĊĠĠĠĠ Ġ* Ġ@ param Ġfn Ġ å¼ķ æķ° ãģ« Ġ åĢ¤ ĠT ĠãĤĴ æĮģ ãģ¡ ãĢģ åŀĭ ĠBoolean ĠãĤĴ è¿Ķ ãģĻ éĸ¢æķ° ĊĠĠĠĠ Ġ* Ġ@ return ĠRo Result ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġabstract Ġfun Ġfilter ( fn : Ġ( T ) Ġ-> ĠBoolean ): ĠRo Result < T > ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠSuccess Ġ ãģª ãĤī éĸ¢æķ° Ġfn Ġãģ® æĪ » ãĤĬ åĢ¤ ãĤĴ æĮģ ãģ¤ ĠSuccess ĠãĤĴ è¿Ķ ãģĻ ĊĠĠĠĠ Ġ* Ġ@ param Ġfn Ġ å¼ķ æķ° ãģ« Ġ åĢ¤ ĠT ĠãĤĴ æĮģ ãģ¡ ãĢģ åŀĭ ĠU ĠãĤĴ è¿Ķ ãģĻ éĸ¢æķ° ĊĠĠĠĠ Ġ* Ġ@ return ĠRo Result ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġabstract Ġfun Ġ< U Ġ: ĠAny > Ġmap ( fn : Ġ( T ) Ġ-> ĠU ): ĠRo Result < U > ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠSuccess Ġ ãģª ãĤī éĸ¢æķ° Ġfn Ġãģ® æĪ » ãĤĬ åĢ¤ ãĤĴ æĮģ ãģ¤ ĠSuccess ĠãĤĴ è¿Ķ ãģĹ ãĢģ ĊĠĠĠĠ Ġ* ĠFailure Ġ ãģª ãĤī éĸ¢æķ° Ġor Ġãģ® æĪ » ãĤĬ åĢ¤ ãĤĴ æĮģ ãģ¤ ĠSuccess ĠãĤĴ è¿Ķ ãģĻ ãĢĤ ĊĠĠĠĠ Ġ* Ġ@ param Ġfn Ġ å¼ķ æķ° ãģ« Ġ åĢ¤ ĠT ĠãĤĴ æĮģ ãģ¡ ãĢģ åŀĭ ĠU ĠãĤĴ è¿Ķ ãģĻ éĸ¢æķ° ĊĠĠĠĠ Ġ* Ġ@ param Ġor Ġ å¼ķ æķ° ãģ« ĠThrowable ĠãĤĴ æĮģ ãģ¡ ãĢģ åŀĭ ĠU ĠãĤĴ è¿Ķ ãģĻ éĸ¢æķ° ĊĠĠĠĠ Ġ* Ġ@ return ĠRo Result ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġabstract Ġfun Ġ< U Ġ: ĠAny > Ġmap OrElse ( fn : Ġ( T ) Ġ-> ĠU , Ġor : Ġ( Throwable ) Ġ-> ĠU ): ĠRo Result < U > ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠSuccess Ġ ãģª ãĤī éĸ¢æķ° Ġfn Ġãģ® æĪ » ãĤĬ åĢ¤ ãĤĴ è¿Ķ ãģĻ ãĢĤ ĊĠĠĠĠ Ġ* ĠSuccess Ġ ãģĭãĤī ĠFailure Ġãģ® å¤ī æıĽ ãģĮ åı¯èĥ½ ãĢĤ ĊĠĠĠĠ Ġ* Ġ@ param Ġfn Ġ å¼ķ æķ° ãģ« Ġ åĢ¤ ĠT ĠãĤĴ æĮģ ãģ¡ ãĢģ Ro Result ĠãĤĴ è¿Ķ ãģĻ éĸ¢æķ° ĊĠĠĠĠ Ġ* Ġ@ return ĠRo Result ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġabstract Ġfun Ġ< U Ġ: ĠAny > Ġand Then ( fn : Ġ( T ) Ġ-> ĠRo Result < U >): ĠRo Result < U > ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠFailure Ġ ãģª ãĤī éĸ¢æķ° Ġfn Ġãģ® æĪ » ãĤĬ åĢ¤ ãĤĴ è¿Ķ ãģĻ ãĢĤ ĊĠĠĠĠ Ġ* ĠFailure Ġ ãģĭãĤī ĠSuccess Ġãģ® å¤ī æıĽ ãģĮ åı¯èĥ½ ãĢĤ ĊĠĠĠĠ Ġ* Ġ@ param Ġfn Ġ å¼ķ æķ° ãģ« ĠThrowable ĠãĤĴ æĮģ ãģ¡ ãĢģ Ro Result ĠãĤĴ è¿Ķ ãģĻ éĸ¢æķ° ĊĠĠĠĠ Ġ* Ġ@ return ĠRo Result ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġabstract Ġfun Ġor Else ( fn : Ġ( Throwable ) Ġ-> ĠRo Result < T >): ĠRo Result < T > ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠSuccess Ġ ãģª ãĤī éĸ¢æķ° Ġfn Ġãģ® æĪ » ãĤĬ åĢ¤ ãĤĴ è¿Ķ ãģĹ ãĢģ ĊĠĠĠĠ Ġ* ĠFailure Ġ ãģª ãĤī éĸ¢æķ° Ġor Ġãģ® æĪ » ãĤĬ åĢ¤ ãĤĴ è¿Ķ ãģĻ ãĢĤ ĊĠĠĠĠ Ġ* ĠSuccess Ġ ãģĭãĤī ĠFailure Ġãģ¨ ĠFailure Ġ ãģĭãĤī ĠSuccess Ġãģ® å¤ī æıĽ ãģĮ åı¯èĥ½ ãĢĤ ĊĠĠĠĠ Ġ* Ġ@ param Ġfn Ġ å¼ķ æķ° ãģ« Ġ åĢ¤ ĠT ĠãĤĴ æĮģ ãģ¡ ãĢģ Ro Result ĠãĤĴ è¿Ķ ãģĻ éĸ¢æķ° ĊĠĠĠĠ Ġ* Ġ@ param Ġor Ġ å¼ķ æķ° ãģ« ĠThrowable ĠãĤĴ æĮģ ãģ¡ ãĢģ Ro Result ĠãĤĴ è¿Ķ ãģĻ éĸ¢æķ° ĊĠĠĠĠ Ġ* Ġ@ return ĠRo Result ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġabstract Ġfun Ġ< U Ġ: ĠAny > Ġand Then OrElse ( fn : Ġ( T ) Ġ-> ĠRo Result < U >, Ġor : Ġ( Throwable ) Ġ-> ĠRo Result < U >): ĠRo Result < U > ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* Ġ èĩª èº« ãģ¨ éĸ¢æķ° Ġfn Ġãģ® æĪ » ãĤĬ åĢ¤ ãģĮ ĠSuccess Ġ åĲĮ å£« ãģª ãĤī ãĢģ ĊĠĠĠĠ Ġ* Ġ ãģĿãĤĮ ãĤī ãģ® åĢ¤ ãĤĴ æĮģ ãģ¤ ĠPair ĠãĤĴ åĢ¤ ãģ¨ ãģĻãĤĭ ĠSuccess Ġ è¿Ķ ãģĻ ãĢĤ ĊĠĠĠĠ Ġ* Ġ@ param Ġfn Ġ å¼ķ æķ° ãģ« Ġ åĢ¤ ĠT ĠãĤĴ æĮģ ãģ¡ ãĢģ Ro Result ĠãĤĴ è¿Ķ ãģĻ éĸ¢æķ° ĊĠĠĠĠ Ġ* Ġ@ return ĠRo Result ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġabstract Ġfun Ġ< U Ġ: ĠAny > Ġzip ( fn : Ġ( T ) Ġ-> ĠRo Result < U >): ĠRo Result < Pair < T , ĠU >> ĊĊĠĠĠ Ġabstract Ġoverride Ġfun Ġequals ( other : ĠAny ?): ĠBoolean ĊĊĠĠĠ Ġabstract Ġoverride Ġfun ĠhashCode (): ĠInt ĊĊĠĠĠ Ġabstract Ġoverride Ġfun ĠtoString (): ĠString ĊĊĠĠĠ Ġcompanion Ġobject Ġ{ ĊĊĠĠĠĠĠĠĠ Ġ/** ĊĠĠĠĠĠĠĠĠ Ġ* ĠFailure ĠãĤĴ è¿Ķ ãģĻ ãĢĤ ĊĠĠĠĠĠĠĠĠ Ġ* Ġ@ return ĠRo Result ĊĠĠĠĠĠĠĠĠ Ġ*/ ĊĠĠĠĠĠĠĠ Ġ@ Jvm Static ĊĠĠĠĠĠĠĠ Ġfun Ġ< T Ġ: ĠAny > Ġfailure ( error : ĠThrowable ): ĠRo Result < T > Ġ= ĠFailure ( error Ġ= Ġerror ) ĊĊĠĠĠĠĠĠĠ Ġ/** ĊĠĠĠĠĠĠĠĠ Ġ* Ġ éĸ¢æķ° Ġfn Ġãģ® æĪ » ãĤĬ åĢ¤ ãĤĴ åĢ¤ ãģ¨ ãģĻãĤĭ ĠSuccess ĠãĤĴ è¿Ķ ãģĻ ãĢĤ ĊĠĠĠĠĠĠĠĠ Ġ* Ġ@ param Ġfn Ġ åŀĭ ĠT ĠãĤĴ è¿Ķ ãģĻ éĸ¢æķ° ĊĠĠĠĠĠĠĠĠ Ġ* Ġ@ return ĠRo Result ĊĠĠĠĠĠĠĠĠ Ġ*/ ĊĠĠĠĠĠĠĠ Ġ@ Jvm Static ĊĠĠĠĠĠĠĠ Ġfun Ġ< T Ġ: ĠAny > Ġsuccess ( fn : Ġ() Ġ-> ĠT ): ĠRo Result < T > Ġ= ĠSuccess ( value Ġ= Ġfn ()) ĊĊĠĠĠĠĠĠĠ Ġ/** ĊĠĠĠĠĠĠĠĠ Ġ* Ġ éĸ¢æķ° Ġfn ĠãģĮ ĠThrowable ĠãĤĴ ãĤ¹ ãĥŃ ãĥ¼ ãģĹãģŁ ãģª ãĤī ĠFailure ĠãĤĴ è¿Ķ ãģĹ ãĢģ ĊĠĠĠĠĠĠĠĠ Ġ* Ġ ãģĿãĤĮ ä»¥ å¤ĸ ãģ¯ æĪ » ãĤĬ åĢ¤ ãĤĴ åĢ¤ ãģ¨ ãģĻãĤĭ ĠSuccess ĠãĤĴ è¿Ķ ãģĻ ãĢĤ ĊĠĠĠĠĠĠĠĠ Ġ* Ġ@ param Ġfn Ġ åŀĭ ĠT ĠãĤĴ è¿Ķ ãģĻ éĸ¢æķ° ĊĠĠĠĠĠĠĠĠ Ġ* Ġ@ return ĠRo Result ĊĠĠĠĠĠĠĠĠ Ġ*/ ĊĠĠĠĠĠĠĠ Ġ@ Jvm Static ĊĠĠĠĠĠĠĠ Ġfun Ġ< T Ġ: ĠAny > Ġtee ( fn : Ġ() Ġ-> ĠT ): ĠRo Result < T > Ġ= Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġsuccess Ġ{ Ġfn () Ġ} ĊĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( e : ĠThrowable ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfailure ( error Ġ= Ġe ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠ Ġ} Ċ Ċ } Ċ Ċ /** Ċ Ġ* ĠFailure Ġ ãĤ¯ãĥ©ãĤ¹ : ĠãĤ¨ ãĥ© ãĥ¼ åĢ¤ ãĤĴ æĮģ ãģ¤ ĠRo Result Ġ ãĤ¯ãĥ©ãĤ¹ Ċ Ġ*/ Ċ class ĠFailure < T Ġ: ĠAny >( ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠFailure Ġ ãĤ¯ãĥ©ãĤ¹ ĠãģĮ ä¿ĿæĮģ ãģĻãĤĭ ãĤ¨ãĥ© ãĥ¼ åĢ¤ ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġval Ġerror : ĠThrowable Ċ Ċ ) Ġ: ĠRo Result < T >() Ġ{ ĊĊĠĠĠ Ġoverride Ġfun Ġget OrElse ( fn : Ġ( Throwable ) Ġ-> ĠT ): ĠT Ġ= Ġfn ( error ) ĊĊĠĠĠ Ġoverride Ġfun Ġget OrNull (): ĠT ? Ġ= Ġnull ĊĊĠĠĠ Ġoverride Ġfun Ġget OrThrow (): ĠT Ġ= Ġthrow ĠFailure Ro Result Exception ( message Ġ= Ġ" get OrThrow ", Ġcause Ġ= Ġerror ) ĊĊĠĠĠ Ġoverride Ġfun Ġfilter ( fn : Ġ( T ) Ġ-> ĠBoolean ): ĠRo Result < T > Ġ= Ġthis ĊĊĠĠĠ Ġoverride Ġfun Ġ< U Ġ: ĠAny > Ġmap ( fn : Ġ( T ) Ġ-> ĠU ): ĠRo Result < U > Ġ= Ġfailure ( error Ġ= Ġerror ) ĊĊĠĠĠ Ġoverride Ġfun Ġ< U Ġ: ĠAny > Ġmap OrElse ( fn : Ġ( T ) Ġ-> ĠU , Ġor : Ġ( Throwable ) Ġ-> ĠU ): ĠRo Result < U > Ġ= Ġtee Ġ{ Ġor ( error ) Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġ< U Ġ: ĠAny > Ġand Then ( fn : Ġ( T ) Ġ-> ĠRo Result < U >): ĠRo Result < U > Ġ= Ġfailure ( error Ġ= Ġerror ) ĊĊĠĠĠ Ġoverride Ġfun Ġor Else ( fn : Ġ( Throwable ) Ġ-> ĠRo Result < T >): ĠRo Result < T > Ġ= Ġtry Ġ{ ĊĠĠĠĠĠĠĠ Ġfn ( error ) ĊĠĠĠ Ġ} Ġcatch Ġ( e : ĠThrowable ) Ġ{ ĊĠĠĠĠĠĠĠ Ġfailure ( error Ġ= Ġe ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġ< U Ġ: ĠAny > Ġand Then OrElse ( fn : Ġ( T ) Ġ-> ĠRo Result < U >, Ġor : Ġ( Throwable ) Ġ-> ĠRo Result < U >): ĠRo Result < U > Ġ= Ġtry Ġ{ ĊĠĠĠĠĠĠĠ Ġor ( error ) ĊĠĠĠ Ġ} Ġcatch Ġ( e : ĠThrowable ) Ġ{ ĊĠĠĠĠĠĠĠ Ġfailure ( error Ġ= Ġe ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġ< U Ġ: ĠAny > Ġzip ( fn : Ġ( T ) Ġ-> ĠRo Result < U >): ĠRo Result < Pair < T , ĠU >> Ġ= Ġfailure ( error Ġ= Ġerror ) ĊĊĠĠĠ Ġoverride Ġfun Ġequals ( other : ĠAny ?): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( this Ġ=== Ġother ) Ġreturn Ġtrue ĊĠĠĠĠĠĠĠ Ġreturn Ġwhen Ġ( other ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġis ĠFailure < *> Ġ-> Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ-> Ġfalse ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun ĠhashCode (): ĠInt Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn ĠObjects . hash ( java Class ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun ĠtoString (): ĠString Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn ĠString . format (" Failure (% s ) ". format ( error )) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġcompanion Ġobject Ġ{ ĊĠĠĠĠĠĠĠ Ġprivate Ġconst Ġval ĠSerial VersionUID : ĠLong Ġ= Ġ 1 L ĊĠĠĠ Ġ} Ċ Ċ } Ċ Ċ /** Ċ Ġ* ĠSuccess Ġ ãĤ¯ãĥ©ãĤ¹ : Ġ åĢ¤ ãĤĴ æĮģ ãģ¤ ĠRo Result Ġ ãĤ¯ãĥ©ãĤ¹ Ċ Ġ*/ Ċ class ĠSuccess < T Ġ: ĠAny >( ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠSuccess Ġ ãĤ¯ãĥ©ãĤ¹ ĠãģĮ ä¿ĿæĮģ ãģĻãĤĭ åĢ¤ ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġval Ġvalue : ĠT Ċ Ċ ) Ġ: ĠRo Result < T >() Ġ{ ĊĊĠĠĠ Ġoverride Ġfun Ġget OrElse ( fn : Ġ( Throwable ) Ġ-> ĠT ): ĠT Ġ= Ġvalue ĊĊĠĠĠ Ġoverride Ġfun Ġget OrNull (): ĠT Ġ= Ġvalue ĊĊĠĠĠ Ġoverride Ġfun Ġget OrThrow (): ĠT Ġ= Ġvalue ĊĊĠĠĠ Ġoverride Ġfun Ġfilter ( fn : Ġ( T ) Ġ-> ĠBoolean ): ĠRo Result < T > Ġ= Ġwhen Ġ( fn ( value )) Ġ{ ĊĠĠĠĠĠĠĠ Ġtrue Ġ-> Ġthis ĊĠĠĠĠĠĠĠ Ġelse Ġ-> Ġfailure ( error Ġ= ĠSuccess Ro Result Exception (" filter ")) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġ< U Ġ: ĠAny > Ġmap ( fn : Ġ( T ) Ġ-> ĠU ): ĠRo Result < U > Ġ= Ġsuccess Ġ{ Ġfn ( value ) Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġ< U Ġ: ĠAny > Ġmap OrElse ( fn : Ġ( T ) Ġ-> ĠU , Ġor : Ġ( Throwable ) Ġ-> ĠU ): ĠRo Result < U > Ġ= Ġsuccess Ġ{ Ġfn ( value ) Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġ< U Ġ: ĠAny > Ġand Then ( fn : Ġ( T ) Ġ-> ĠRo Result < U >): ĠRo Result < U > Ġ= Ġtry Ġ{ ĊĠĠĠĠĠĠĠ Ġfn ( value ) ĊĠĠĠ Ġ} Ġcatch Ġ( e : ĠThrowable ) Ġ{ ĊĠĠĠĠĠĠĠ Ġfailure ( error Ġ= Ġe ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġor Else ( fn : Ġ( Throwable ) Ġ-> ĠRo Result < T >): ĠRo Result < T > Ġ= Ġthis ĊĊĠĠĠ Ġoverride Ġfun Ġ< U Ġ: ĠAny > Ġand Then OrElse ( fn : Ġ( T ) Ġ-> ĠRo Result < U >, Ġor : Ġ( Throwable ) Ġ-> ĠRo Result < U >): ĠRo Result < U > Ġ= Ġtry Ġ{ ĊĠĠĠĠĠĠĠ Ġfn ( value ) ĊĠĠĠ Ġ} Ġcatch Ġ( e : ĠThrowable ) Ġ{ ĊĠĠĠĠĠĠĠ Ġfailure ( error Ġ= Ġe ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġ< U Ġ: ĠAny > Ġzip ( fn : Ġ( T ) Ġ-> ĠRo Result < U >): ĠRo Result < Pair < T , ĠU >> Ġ= Ġtry Ġ{ ĊĠĠĠĠĠĠĠ Ġwhen Ġ( val Ġresult Ġ= Ġfn ( value )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġis ĠFailure < U > Ġ-> Ġfailure ( error Ġ= Ġresult . error ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġis ĠSuccess < U > Ġ-> Ġsuccess Ġ{ ĠPair ( value , Ġresult . get OrThrow ()) Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ġcatch Ġ( e : ĠThrowable ) Ġ{ ĊĠĠĠĠĠĠĠ Ġfailure ( error Ġ= Ġe ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġequals ( other : ĠAny ?): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( this Ġ=== Ġother ) Ġreturn Ġtrue ĊĠĠĠĠĠĠĠ Ġreturn Ġwhen Ġ( other ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġis ĠSuccess < *> Ġ-> Ġvalue Ġ== Ġother . value ĊĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ-> Ġfalse ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun ĠhashCode (): ĠInt Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn ĠObjects . hash ( java Class , Ġvalue ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun ĠtoString (): ĠString Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn ĠString . format (" Success (% s ) ". format ( value )) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġcompanion Ġobject Ġ{ ĊĠĠĠĠĠĠĠ Ġprivate Ġconst Ġval ĠSerial VersionUID : ĠLong Ġ= Ġ 1 L ĊĠĠĠ Ġ} Ċ } Ċ