package Ġast ify . util Ċ Ċ import Ġast ify . Text Position Ċ import Ġast ify . Text Position ed Ċ Ċ sealed Ġclass ĠA Optional < out ĠT : ĠText Position ed >: ĠText Position ed Ġ{ ĊĠĠĠ Ġdata Ġclass ĠSome < T : ĠText Position ed >( val Ġvalue : ĠT ): ĠA Optional < T >() Ġ{ ĊĠĠĠĠĠĠĠ Ġoverride Ġval Ġposition Ġ= Ġvalue . position ĊĠĠĠ Ġ} ĊĠĠĠ Ġdata Ġclass ĠNone ( override Ġval Ġposition : ĠText Position ): ĠA Optional < Nothing >() ĊĊĠĠĠ Ġ// ////////////////////////////////////////////////////////////////////////// ĊĊĠĠĠ Ġfun Ġ< R : ĠText Position ed > Ġmap ( fn : Ġ( T ) Ġ-> ĠR ): ĠA Optional < R > Ġ= Ġwhen Ġ( this ) Ġ{ ĊĠĠĠĠĠĠĠ Ġis ĠSome Ġ-> ĠSome ( fn ( value )) ĊĠĠĠĠĠĠĠ Ġis ĠNone Ġ-> Ġthis ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġ< R : ĠText Position ed > Ġflat Map ( fn : Ġ( T ) Ġ-> ĠA Optional < R >): ĠA Optional < R > Ġ= Ġwhen Ġ( this ) Ġ{ ĊĠĠĠĠĠĠĠ Ġis ĠSome Ġ-> Ġfn ( value ) ĊĠĠĠĠĠĠĠ Ġis ĠNone Ġ-> Ġthis ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ// ////////////////////////////////////////////////////////////////////////// ĊĊĠĠĠ Ġcompanion Ġobject Ġ{ ĊĠĠĠĠĠĠĠ Ġfun Ġ< T : ĠText Position ed > Ġpure ( value : ĠT ) Ġ= ĠSome ( value ) ĊĠĠĠ Ġ} Ċ } Ċ