/* Ċ Ġ* ĠCopyright Ġ 2 0 2 0 ĠS pi kot Ġproject Ġauthors Ċ Ġ* Ċ Ġ* ĠLicensed Ġunder Ġthe ĠApache ĠLicense , ĠVersion Ġ 2 . 0 Ġ( the Ġ" License "); Ċ Ġ* Ġyou Ġmay Ġnot Ġuse Ġthis Ġfile Ġexcept Ġin Ġcompliance Ġwith Ġthe ĠLicense . Ċ Ġ* ĠYou Ġmay Ġobtain Ġa Ġcopy Ġof Ġthe ĠLicense Ġat Ċ Ġ* Ċ Ġ* ĠĠĠĠĠ Ġhttp :// www . apache . org / licenses / LICENSE - 2 . 0 Ċ Ġ* Ċ Ġ* Ġ ĠUnless Ġrequired Ġby Ġapplicable Ġlaw Ġor Ġagreed Ġto Ġin Ġwriting , Ġsoftware Ċ Ġ* Ġ Ġdistributed Ġunder Ġthe ĠLicense Ġis Ġdistributed Ġon Ġan Ġ" AS ĠIS " ĠBASIS , Ċ Ġ* Ġ ĠWITHOUT ĠWARRANTIES ĠOR ĠCONDITIONS ĠOF ĠANY ĠKIND , Ġeither Ġexpress Ġor Ġimplied . Ċ Ġ* Ġ ĠSee Ġthe ĠLicense Ġfor Ġthe Ġspecific Ġlanguage Ġgoverning Ġpermissions Ġand Ċ Ġ* Ġ Ġlimitations Ġunder Ġthe ĠLicense . Ċ Ġ*/ Ċ Ċ package Ġkr . he ar tp attern . sp ik ot . misc Ċ Ċ /** Ċ Ġ* ĠSimple Ġoptional Ġtype Ċ Ġ* Ġ@ param ĠT Ġcontaining Ġtype Ċ Ġ*/ Ċ sealed Ġclass ĠOption < out ĠT > Ċ Ċ /** Ċ Ġ* ĠOptional Ġtype Ġwith Ġvalue Ċ Ġ* Ġ@ param Ġvalue ĠValue Ġof Ġthis Ġoptional Ġvalue Ċ Ġ*/ Ċ class ĠJust < T >( val Ġvalue : ĠT ) Ġ: ĠOption < T >() Ċ Ċ /** Ċ Ġ* ĠOptional Ġtype Ġwithout Ġvalue Ċ Ġ*/ Ċ object ĠNone Ġ: ĠOption < Nothing >() Ċ Ċ /** Ċ Ġ* ĠExtract Ġvalue Ġfrom Ġoption Ġor Ġnull Ċ Ġ* Ġ@ receiver ĠOption Ġto Ġextract Ċ Ġ* Ġ@ return ĠValue Ġof Ġoption Ġor Ġnull Ċ Ġ*/ Ċ fun Ġ< T > ĠOption < T >. get OrNull (): ĠT ? Ġ= Ġ( this Ġas ? ĠJust < T >) ?. value Ċ Ċ /** Ċ Ġ* ĠExtract Ġvalue Ġfrom Ġoption Ġor Ġdefault Ġvalue Ċ Ġ* Ġ@ receiver ĠOption Ġto Ġextract Ċ Ġ* Ġ@ param Ġdefault ĠDefault Ġvalue Ġsupplier Ċ Ġ* Ġ@ receiver ĠValue Ġof Ġoption Ġor Ġdefault Ġvalue Ċ Ġ*/ Ċ inline Ġfun Ġ< T > ĠOption < T >. getOrElse ( default : Ġ() Ġ-> ĠT ): ĠT Ġ{ ĊĠĠĠ Ġreturn Ġif Ġ( this Ġis ĠJust ) Ġ{ ĊĠĠĠĠĠĠĠ Ġvalue ĊĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠ Ġdefault () ĊĠĠĠ Ġ} Ċ } Ċ Ċ /** Ċ Ġ* ĠCreate ĠOption Ġfrom Ġnullable Ġvalue Ċ Ġ*/ Ċ val Ġ< T Ġ: ĠAny > ĠT ?. option : ĠOption < T > ĊĠĠĠ Ġget () Ġ= Ġif Ġ( this Ġ== Ġnull ) ĠNone Ġelse ĠJust ( this ) Ċ Ċ /** Ċ Ġ* ĠCreate ĠJust Ġfrom Ġvalue Ċ Ġ*/ Ċ val Ġ< T > ĠT . just : ĠOption < T > ĊĠĠĠ Ġget () Ġ= ĠJust ( this ) Ċ