// ĠWITH _ STD LIB Ċ // ĠWORK S _ WHEN _ VALUE _ CLASS Ċ // ĠLANGUAGE : Ġ+ Value Classes , Ġ+ Generic Inline Class Parameter Ċ Ċ OPTIONAL _ JVM _ INLINE _ AN NOT ATION Ċ value Ġclass ĠWith Primitive < T : ĠInt >( val Ġa : ĠT ) Ċ fun Ġ< T : ĠInt > Ġtake With Primitive ( a : ĠWith Primitive < T >) Ġ{} Ċ Ċ OPTIONAL _ JVM _ INLINE _ AN NOT ATION Ċ value Ġclass ĠWith Reference < T : ĠAny >( val Ġa : ĠT ) Ċ fun Ġ< T : ĠAny > Ġtake With Reference ( a : ĠWith Reference < T >) Ġ{} Ċ Ċ OPTIONAL _ JVM _ INLINE _ AN NOT ATION Ċ value Ġclass ĠWith Nullable Reference < T >( val Ġa : ĠT ) Ċ fun Ġ< T > Ġtake With Nullable Reference ( a : ĠWith Nullable Reference < T >) Ġ{} Ċ Ċ OPTIONAL _ JVM _ INLINE _ AN NOT ATION Ċ value Ġclass ĠWith Nullable Reference 2 < T : ĠAny >( val Ġa : ĠT ?) Ċ fun Ġ< T : ĠAny > Ġtake With Nullable Reference 2 ( a : ĠWith Nullable Reference 2 < T >) Ġ{} Ċ Ċ fun Ġ< T : ĠInt > Ġfoo ( a : ĠWith Primitive < T > ?, Ġb : ĠWith Primitive < T >) Ġ{ ĊĠĠĠ Ġtake With Primitive ( a !! ) Ġ// Ġun box ĊĠĠĠ Ġtake With Primitive ( a ) Ġ// Ġun box ĊĠĠĠ Ġtake With Primitive ( b !! ) Ċ } Ċ Ċ fun Ġ< T : ĠAny , ĠT 2 : ĠAny > Ġbar ( a : ĠWith Reference < T > ?, Ġb : ĠWith Reference < T 2 >) Ġ{ ĊĠĠĠ Ġtake With Reference ( a !! ) ĊĠĠĠ Ġtake With Reference ( a ) ĊĠĠĠ Ġtake With Reference ( b !! ) Ċ } Ċ Ċ fun Ġ< T , ĠR > Ġbaz ( a : ĠWith Nullable Reference < T > ?, Ġb : ĠWith Nullable Reference < R >) Ġ{ ĊĠĠĠ Ġtake With Nullable Reference ( a !! ) Ġ// Ġun box ĊĠĠĠ Ġtake With Nullable Reference ( a ) Ġ// Ġun box ĊĠĠĠ Ġtake With Nullable Reference ( a !! ) Ġ// Ġun box ĊĠĠĠ Ġtake With Nullable Reference ( b !! ) Ċ } Ċ Ċ fun Ġ< T : ĠAny , ĠR : ĠAny > Ġbaz 2 ( a : ĠWith Nullable Reference 2 < T > ?, Ġb : ĠWith Nullable Reference 2 < R >) Ġ{ ĊĠĠĠ Ġtake With Nullable Reference 2 ( a !! ) Ġ// Ġun box ĊĠĠĠ Ġtake With Nullable Reference 2 ( a ) Ġ// Ġun box ĊĠĠĠ Ġtake With Nullable Reference 2 ( a !! ) Ġ// Ġun box ĊĠĠĠ Ġtake With Nullable Reference 2 ( b !! ) Ċ } Ċ Ċ fun Ġbox (): ĠString Ġ{ ĊĠĠĠ Ġval Ġa 1 Ġ= ĠWith Primitive ( 1 ) ĊĠĠĠ Ġval Ġb 1 Ġ= ĠWith Primitive ( 2 ) ĊĊĠĠĠ Ġfoo ( a 1 , Ġb 1 ) ĊĊĠĠĠ Ġval Ġa 2 Ġ= ĠWith Reference ("") ĊĊĠĠĠ Ġbar ( a 2 , Ġa 2 ) ĊĊĠĠĠ Ġval Ġa 3 Ġ= ĠWith Nullable Reference (" test ") ĊĠĠĠ Ġval Ġa 4 Ġ= ĠWith Nullable Reference ( 1 2 3 ) ĊĊĠĠĠ Ġbaz ( a 3 , Ġa 4 ) ĊĊĠĠĠ Ġval Ġa 3 2 Ġ= ĠWith Nullable Reference 2 (" test ") ĊĠĠĠ Ġval Ġa 4 2 Ġ= ĠWith Nullable Reference 2 ( 1 2 3 ) ĊĊĠĠĠ Ġbaz 2 ( a 3 2 , Ġa 4 2 ) ĊĊĠĠĠ Ġreturn Ġ" OK " Ċ }