fun Ġfn 0 (): ĠUnit Ġ{ Ċ Ċ } Ċ fun Ġfn 1 ( x : ĠAny ): ĠUnit Ġ{ Ċ Ċ } Ċ inline Ġfun Ġsafe As Returns Null ( operation : ĠString , Ġcast : Ġ(() Ġ-> Ġ( Any )? )): ĠUnit Ġ{ Ċ try Ġ{ Ċ val Ġx Ġ= Ġcast () Ċ assert ( x Ġ== Ġnull ) ({" $ operation : Ġshould Ġreturn Ġnull , Ġgot Ġ$ x "}) Ċ } catch ( e : Ġ( Throwable )? ) Ġ{ Ċ throw ĠAssertionError ("$ operation : Ġshould Ġnot Ġthrow Ġexceptions , Ġgot Ġ$ e ") Ċ } Ċ } Ċ inline Ġfun Ġsafe As Returns NonNull ( operation : ĠString , Ġcast : Ġ(() Ġ-> ĠAny )): ĠUnit Ġ{ Ċ try Ġ{ Ċ val Ġx Ġ= Ġcast () Ċ assert ( x Ġ!= Ġnull ) ({" $ operation : Ġshould Ġreturn Ġnon - null "}) Ċ } catch ( e : ĠThrowable ) Ġ{ Ċ throw ĠAssertionError ("$ operation : Ġshould Ġnot Ġthrow Ġexceptions , Ġgot Ġ$ e ") Ċ } Ċ } Ċ fun Ġbox (): ĠString Ġ{ Ċ val Ġf 0 Ġ= Ġ(:: fn 0 Ġas ĠAny ) Ċ val Ġf 1 Ġ= Ġ((( :: fn 1 )) !!!! Ġas ĠAny ) Ċ safe As Returns NonNull (" f 0 Ġas ? ĠFunction 0 < *> ") ({ ( f 0 Ġas ? Ġ( Function 0 <* >) ?) }) Ċ safe As Returns Null (" f 0 Ġas ? ĠFunction 1 < *, Ġ* >") ({ ( f 0 Ġas ? ĠFunction 1 < *, Ġ* >) }) Ċ safe As Returns Null (" f 1 Ġas ? ĠFunction 0 < *> ") ({ ( f 1 Ġas ? ĠFunction 0 <* >) }) Ċ safe As Returns NonNull (" f 1 Ġas ? ĠFunction 1 < *, Ġ* >") ({ ( f 1 Ġas ? ĠFunction 1 < *, Ġ* >) }) Ċ return Ġ" OK " Ċ }