package Ġcom . wall ace . te aching . kotlin . E Ċ Ċ fun Ġmain ( args : ĠArray < String >) Ġ{ ĊĠĠĠ Ġ// ĠCannot Ġbe Ġnull . ĊĠĠĠ Ġval Ġfoo : ĠInt Ġ= Ġ 0 ĊĊĠĠĠ Ġ// ĠAll Ġmethod Ġcalls Ġon Ġthis Ġare Ġguaranteed Ġto Ġbe Ġnull Ġsafe . ĊĠĠĠ Ġfoo . to Byte (). toString () ĊĊĠĠĠ Ġ// ĠMay Ġbe Ġnull ĊĠĠĠ Ġval Ġnulla Foo : ĠInt ? Ġ= ĠlistOf ( 0 , Ġ 1 , Ġnull ). random () ĊĊĠĠĠ Ġ// ĠDoes Ġnot Ġcompile , Ġbecause Ġnulla Foo Ġcan Ġbe Ġnull ... Ċ // ĠĠĠ Ġval Ġnull Str 1 Ġ= Ġnulla Foo . to Byte (). toString () ĊĊĠĠĠ Ġ// ĠComp iles . Ġ? . Ġwill Ġreturn Ġnull Ġif Ġnulla Foo Ġis Ġnull , Ġotherwise Ġcontinue Ġalong Ġthe Ġchain ĊĠĠĠ Ġval Ġnull Str 2 : ĠString ? Ġ= Ġnulla Foo ?. to Byte (). toString () ĊĊĠĠĠ Ġ// ĠEl vis Ġoperator Ġ?: Ġmeans Ġif Ġleft Ġis Ġnull , Ġreturn Ġright . ĠSo Ġif Ġnulla Foo Ġis Ġnull , Ġthen Ġnull str 4 Ġwill Ġequal Ġ 0 ĊĠĠĠ Ġval Ġbar Ġ= Ġnulla Foo ?: 0 . to Byte (). toString () ĊĊĠĠĠ Ġ// ĠSmart Ġcasting Ġfor Ġfun Ġand Ġprofit ĊĠĠĠ Ġif ( null a Foo Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠ Ġ// ĠFor Ġthis Ġentire Ġblock , Ġnulla Foo Ġis Ġknown Ġto Ġnot Ġbe Ġnull , Ġso Ġno Ġel v ises Ġor Ġnull Ġsafety Ġneeded ! ĊĠĠĠĠĠĠĠ Ġval Ġnull str 3 Ġ= Ġnulla Foo . to Byte (). toString () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ// ĠComp iles . Ġ!! Ġwill Ġthrow Ġa Ġnull Ġpointer Ġexception Ġif Ġnulla Foo Ġis Ġnull ĊĠĠĠ Ġval Ġnull str 4 Ġ= Ġnulla Foo !!. to Byte (). toString () ĊĊĠĠĠ Ġnulla Foo . to Byte () ĊĊ Ċ }