data Ġclass ĠSome Object ( val Ġn : ĠSome Object ?) Ġ{ ĊĠĠĠ Ġfun Ġdo Something (): ĠBoolean Ġ= Ġtrue ĊĠĠĠ Ġfun Ġnext (): ĠSome Object ? Ġ= Ġn ĠĠĠĠ Ċ } Ċ Ċ fun Ġlist ( start : ĠSome Object ) Ġ{ ĊĠĠĠ Ġvar Ġe : ĠSome Object ? Ġ= Ġstart ĊĠĠĠ Ġwhile Ġ( e Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠ Ġ// ĠSmart Ġcast Ġdue Ġto Ġthe Ġloop Ġcondition ĊĠĠĠĠĠĠĠ Ġif Ġ(! e . do Something ()) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġbreak ĊĠĠĠĠĠĠĠ Ġ// ĠWe Ġstill Ġhave Ġsmart Ġcast Ġhere Ġdespite Ġof Ġa Ġbreak ĊĠĠĠĠĠĠĠ Ġe Ġ= Ġe . next () ĊĠĠĠ Ġ} ĊĠĠĠ Ġ// Ġe Ġcan Ġbe Ġnull Ġbecause Ġof Ġnext () ĊĠĠĠ Ġe <! UN SAFE _ CALL ! >. <! > do Something () Ċ } Ċ