open Ġclass ĠC Ġ{ Ċ } Ċ Ċ fun ĠC . foo () Ġ{} Ċ Ċ open Ġclass ĠX Ġ{ ĊĠĠĠ Ġcompanion Ġobject Ġ: ĠC () Ġ{} Ċ } Ċ Ċ open Ġclass ĠY Ġ{ ĊĠĠĠ Ġcompanion Ġobject Ġ: ĠC () Ġ{} Ċ } Ċ Ċ fun Ġbar () Ġ{ ĊĠĠĠ Ġval Ġx Ġ= ĠX ĊĠĠĠ Ġx . foo () ĊĠĠĠ ĠX . foo () ĊĠĠĠ Ġ( X Ġas ĠC ). foo () ĊĠĠĠ Ġ(( if Ġ( 1 < 2 ) ĠX Ġelse ĠY ) Ġas ĠC ). foo () Ċ } Ċ