package Ġk py . utils Ċ Ċ /* Ċ * ĠGeneric Ċ * Ċ * Ġ@ author Ġjak ode Ċ * Ġ@ since Ġv 2 . 0 . 0 Ġ 0 8 / 2 4 / 2 0 2 1 Ċ */ Ċ Ċ /** Ċ Ġ* Ġif Null Ġexecute Ġwhen Ġvalue Ġis Ġnull Ċ Ġ* Ġ@ return Ġvalue Ġor Ġ[ Unit ] Ċ Ġ*/ Ċ inline Ġfun Ġ< T > ĠT ?. if Null ( block : Ġ( T ?) Ġ-> ĠAny ): ĠAny Ġ{ ĊĠĠĠ Ġreturn Ġthis Ġ?: Ġblock ( this ) Ċ } Ċ Ċ /** Ċ Ġ* Ġif NotNull Ġexecute Ġwhen Ġvalue Ġisn 't Ġnull Ċ Ġ* Ġ@ return Ġvalue Ġor Ġ[ Unit ] Ċ Ġ*/ Ċ inline Ġfun Ġ< T , ĠR > ĠT ?. if NotNull ( block : Ġ( T ) Ġ-> ĠR ): ĠR ? Ġ{ ĊĠĠĠ Ġreturn Ġif Ġ( this Ġ!= Ġnull ) Ġblock ( this ) Ġelse Ġthis Ċ } Ċ Ċ /** ĠChecking Ġnull ability Ġ*/ Ċ fun Ġ< T > ĠT ?. isNull () Ġ= Ġthis Ġ== Ġnull Ċ Ċ /** ĠChecking Ġnone Ġnull ability Ġ*/ Ċ fun Ġ< T > ĠT ?. isNotNull () Ġ= Ġthis Ġ!= Ġnull Ċ Ċ /** Ċ Ġ* Ġwhen Ġlong Ġis Ġnull Ġdefault Ġvalue Ġis Ġzero Ċ Ġ* Ġ@ return Ġ[ Long ] Ġvalue Ġor Ġ** Zero ** Ċ Ġ*/ Ċ fun ĠLong ?. or Zero (): ĠLong Ġ= Ġthis Ġ?: Ġ 0 L Ċ Ċ /** Ċ Ġ* Ġwhen Ġfloat Ġis Ġnull Ġdefault Ġvalue Ġis Ġzero Ċ Ġ* Ġ@ return Ġ[ Float ] Ġvalue Ġor Ġ** Zero ** Ċ Ġ*/ Ċ fun ĠFloat ?. or Zero (): ĠFloat Ġ= Ġthis Ġ?: Ġ 0 F Ċ Ċ /** Ċ Ġ* Ġwhen Ġdouble Ġis Ġnull Ġdefault Ġvalue Ġis Ġzero Ċ Ġ* Ġ@ return Ġ[ Double ] Ġvalue Ġor Ġ** Zero ** Ċ Ġ*/ Ċ fun ĠDouble ?. or Zero (): ĠDouble Ġ= Ġthis Ġ?: Ġ 0 . 0 Ċ Ċ /** Ċ Ġ* Ġwhen Ġnumber Ġis Ġnull Ġdefault Ġvalue Ġis Ġzero Ċ Ġ* Ġ@ return Ġ[ Number ] Ġvalue Ġor Ġ** Zero ** Ċ Ġ*/ Ċ fun ĠNumber ?. or Zero (): ĠNumber Ġ= Ġthis Ġ?: Ġ 0 Ċ Ċ /** Ċ Ġ* Ġwhen Ġvariable Ġis Ġnull Ġdefault Ġvalue Ġmaintained Ċ Ġ* Ġ@ return Ġ[ T ] Ġvalue Ġor Ġ** default ** Ċ Ġ*/ Ċ fun Ġ< T > ĠT ?. or Default ( default : ĠT ): ĠT Ġ{ ĊĠĠĠ Ġreturn Ġthis Ġ?: Ġdefault Ċ } Ċ Ċ /* Ġtry Ġblock Ġwithout Ġcatch ing Ġ*/ Ċ inline Ġfun Ġtry Or Ignore ( block : Ġ() Ġ-> ĠUnit ) Ġ{ ĊĠĠĠ Ġtry Ġ{ ĊĠĠĠĠĠĠĠ Ġblock () ĊĠĠĠ Ġ} Ġcatch Ġ( e : ĠException ) Ġ{ ĊĠĠĠ Ġ} Ċ }