sealed Ġclass ĠS Ċ Ċ object ĠFirst Ġ: ĠS () Ċ Ċ class ĠDerived ( val Ġs : ĠString ) Ġ: ĠS () Ċ Ċ object ĠLast Ġ: ĠS () Ċ Ċ fun Ġuse ( s : ĠString ) Ġ= Ġs Ċ Ċ fun Ġfoo ( s : ĠS ) Ġ{ ĊĠĠĠ Ġwhen Ġ( s ) Ġ{ ĊĠĠĠĠĠĠĠ ĠFirst Ġ-> Ġ{} ĊĠĠĠĠĠĠĠ Ġis ĠDerived Ġ-> Ġuse ( s . s ) ĊĠĠĠ Ġ} Ċ }