interface ĠI Ċ data Ġclass ĠFoo ( val Ġi : ĠInt ) Ġ: ĠI Ċ data Ġclass ĠBar ( val Ġs : ĠString ) Ċ Ċ fun Ġtest ( f 1 : ĠFoo , Ġf 2 : ĠFoo , Ġf 3 : ĠFoo ?, Ġb 1 : ĠBar , Ġb 2 : ĠBar ?, Ġi : ĠI ) Ġ{ ĊĠĠĠ Ġtypes Have Common Subtype ( f 1 , Ġf 2 ) ĊĠĠĠ Ġtypes Have Common Subtype ( f 1 , Ġf 3 ) ĊĠĠĠ Ġtypes Have Common Subtype ( f 3 , Ġb 2 ) ĊĠĠĠ Ġtypes Have Common Subtype ( f 1 , Ġi ) ĊĊĠĠĠ Ġtypes Have No Common Subtype ( f 1 , Ġb 1 ) ĊĠĠĠ Ġtypes Have No Common Subtype ( f 1 , Ġb 2 ) ĊĠĠĠ Ġtypes Have No Common Subtype ( b 1 , Ġi ) Ċ } Ċ