package Ġfr . ac in q . lightning . utils Ċ Ċ sealed Ġclass ĠEither < out ĠA , Ġout ĠB > Ġ{ ĊĠĠĠ Ġabstract Ġval Ġis Left : ĠBoolean ĊĠĠĠ Ġabstract Ġval Ġis Right : ĠBoolean ĊĠĠĠ Ġabstract Ġval Ġleft : ĠA ? ĊĠĠĠ Ġabstract Ġval Ġright : ĠB ? ĊĊĠĠĠ Ġfun Ġ< X > Ġfold ( fa : Ġ( A ) Ġ-> ĠX , Ġfb : Ġ( B ) Ġ-> ĠX ): ĠX Ġ= Ġwhen Ġ( this ) Ġ{ ĊĠĠĠĠĠĠĠ Ġis ĠLeft Ġ-> Ġfa ( this . value ) ĊĠĠĠĠĠĠĠ Ġis ĠRight Ġ-> Ġfb ( this . value ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġ< X , ĠY > Ġtransform ( fa : Ġ( A ) Ġ-> ĠX , Ġfb : Ġ( B ) Ġ-> ĠY ): ĠEither < X , ĠY > Ġ= Ġwhen Ġ( this ) Ġ{ ĊĠĠĠĠĠĠĠ Ġis ĠLeft Ġ-> ĠLeft ( fa ( this . value )) ĊĠĠĠĠĠĠĠ Ġis ĠRight Ġ-> ĠRight ( fb ( this . value )) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġdata Ġclass ĠLeft < out ĠA , ĠNothing >( val Ġvalue : ĠA ) Ġ: ĠEither < A , ĠNothing >() Ġ{ ĊĠĠĠĠĠĠĠ Ġoverride Ġval Ġis Left Ġ= Ġtrue ĊĠĠĠĠĠĠĠ Ġoverride Ġval Ġis Right Ġ= Ġfalse ĊĠĠĠĠĠĠĠ Ġoverride Ġval Ġleft : ĠA ? Ġ= Ġvalue ĊĠĠĠĠĠĠĠ Ġoverride Ġval Ġright Ġ= Ġnull ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġdata Ġclass ĠRight < Nothing , Ġout ĠB >( val Ġvalue : ĠB ) Ġ: ĠEither < Nothing , ĠB >() Ġ{ ĊĠĠĠĠĠĠĠ Ġoverride Ġval Ġis Left Ġ= Ġfalse ĊĠĠĠĠĠĠĠ Ġoverride Ġval Ġis Right Ġ= Ġtrue ĊĠĠĠĠĠĠĠ Ġoverride Ġval Ġleft Ġ= Ġnull ĊĠĠĠĠĠĠĠ Ġoverride Ġval Ġright Ġ= Ġvalue ĊĠĠĠ Ġ} Ċ } Ċ Ċ @ Suppress (" UN CHECK ED _ CAST ") Ċ fun Ġ< L , ĠR , ĠT > ĠEither < L , ĠR >. flatMap ( f : Ġ( R ) Ġ-> ĠEither < L , ĠT >): ĠEither < L , ĠT > Ġ= ĊĠĠĠ Ġthis . fold ({ Ġthis Ġas ĠEither < L , ĠT > Ġ}, Ġf ) Ċ Ċ fun Ġ< L , ĠR , ĠT > ĠEither < L , ĠR >. map ( f : Ġ( R ) Ġ-> ĠT ): ĠEither < L , ĠT > Ġ= ĊĠĠĠ Ġflat Map Ġ{ ĠEither . Right ( f ( it )) Ġ}