@ file : Suppress (" UN CHECK ED _ CAST ") Ċ Ċ package Ġsu . ch Ċ Ċ import Ġsu . ch . annotation . Beta Ċ import Ġsu . ch . framework . Applic ative Ċ import Ġsu . ch . framework . Monad Ċ import Ġjava . util . function . Function Ċ Ċ @ Beta Ċ sealed Ġclass ĠMaybe < A > Ġconstructor ( value : ĠA ) Ġ: ĠMonad < A , ĠMaybe < A >>( value ) Ġ{ ĊĊĠĠĠ Ġoverride Ġfun Ġ< A > Ġcreate ( value : ĠA ): ĠMonad < *, Ġ*> Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn ĠJust ( value ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġclass ĠJust < A >( value : ĠA ) Ġ: ĠMaybe < A >( value ) ĊĊĠĠĠ Ġclass ĠNothing < A > Ġ: ĠMaybe < A >( Unit . Unit Ġas ĠA ) Ġ{ ĊĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġ< B > Ġmap ( mapper : ĠFunction < B , Ġ* >): ĠMaybe < A > Ġ= ĠNothing () ĊĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġ< B > Ġapply ( functor : ĠApplic ative < B , ĠMonad < *, Ġ* >> ): ĠMaybe < A > Ġ= ĠNothing () ĊĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġ< B > Ġflat Map ( mapper : ĠFunction < A , ĠMonad < B , Ġ* >> ): ĠMaybe < A > Ġ= ĠNothing () ĊĊĠĠĠĠĠĠĠ Ġoverride Ġfun ĠtoString (): ĠString Ġ= ĠToString ( this ). toString () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġcompanion Ġobject Ġ{ ĊĠĠĠĠĠĠĠ Ġ@ Jvm Static Ġfun Ġ< A > ĠJust ( value : ĠA ?): ĠMaybe < A > Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġwhen Ġ( value ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġnull Ġ-> ĠMaybe . Nothing () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ-> ĠMaybe . Just ( value ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ@ Jvm Static Ġfun Ġ< A > ĠNothing () Ġ: ĠNothing < A > Ġ= ĠMaybe . Nothing () ĊĠĠĠ Ġ} Ċ Ċ }