package Ġfoo Ċ Ċ class ĠBar Ġ: ĠFunction 0 < String > Ġ{ ĊĠĠĠ Ġoverride Ġfun Ġinvoke () Ġ= Ġ" Bar . invoke ()" Ċ } Ċ Ċ class ĠB az Ġ: ĠFunction 2 < Int , ĠBoolean , ĠString > Ġ{ ĊĠĠĠ Ġoverride Ġfun Ġinvoke ( i : ĠInt , Ġb : ĠBoolean ) Ġ= Ġ" B az . invoke ($ i , Ġ$ b )" Ċ } Ċ Ċ class ĠExt Bar Ġ: ĠExtension Function 0 < String , ĠString > Ġ{ ĊĠĠĠ Ġoverride Ġfun ĠString . invoke () Ġ= Ġ" Ext Bar . invoke ($ this )" Ċ } Ċ Ċ class ĠExt B az Ġ: ĠExtension Function 2 < String , ĠInt , ĠBoolean , ĠString > Ġ{ ĊĠĠĠ Ġoverride Ġfun ĠString . invoke ( i : ĠInt , Ġb : ĠBoolean ) Ġ= Ġ" Ext B az . invoke ($ this , Ġ$ i , Ġ$ b )" Ċ } Ċ Ċ class ĠM ixed Ġ: ĊĠĠĠĠĠĠĠ ĠFunction 1 < Int , ĠString >, ĊĠĠĠĠĠĠĠ ĠFunction 2 < Int , ĠBoolean , ĠString >, ĊĠĠĠĠĠĠĠ ĠExtension Function 1 < Int , ĠBoolean , ĠString >, ĊĠĠĠĠĠĠĠ ĠExtension Function 2 < Int , ĠInt , ĠBoolean , ĠString > Ċ { ĊĠĠĠ Ġoverride Ġfun Ġinvoke ( i : ĠInt ) Ġ= Ġ" Mixed . invoke ($ i )" ĊĠĠĠ Ġoverride Ġfun Ġinvoke ( i : ĠInt , Ġb : ĠBoolean ) Ġ= Ġ" Mixed . invoke ($ i , Ġ$ b )" ĊĠĠĠ Ġoverride Ġfun ĠInt . invoke ( b : ĠBoolean ) Ġ= Ġ" ext ĠM ixed . invoke ($ this , Ġ$ b )" ĊĠĠĠ Ġoverride Ġfun ĠInt . invoke ( i : ĠInt , Ġb : ĠBoolean ) Ġ= Ġ" ext ĠM ixed . invoke ($ this , Ġ$ i , Ġ$ b )" Ċ } Ċ Ċ fun Ġbox (): ĠString Ġ{ ĊĠĠĠ Ġval Ġbar Ġ= ĠBar () ĊĠĠĠ Ġval Ġbaz Ġ= ĠB az () ĊĠĠĠ Ġval Ġext Bar Ġ= ĠExt Bar () ĊĠĠĠ Ġval Ġext B az Ġ= ĠExt B az () ĊĠĠĠ Ġval Ġmixed Ġ= ĠM ixed () ĊĊĠĠĠ ĠassertEquals (" Bar . invoke ()", Ġbar ()) ĊĠĠĠ ĠassertEquals (" B az . invoke ( 2 , Ġfalse )", Ġbaz ( 2 , Ġfalse )) ĊĠĠĠ ĠassertEquals (" Ext Bar . invoke ( 2 e 2 )", Ġ" 2 e 2 ". ext Bar ()) ĊĠĠĠ ĠassertEquals (" Ext B az . invoke ( 2 9 , Ġ 3 4 , Ġtrue )", Ġ" 2 9 ". ext B az ( 3 4 , Ġtrue )) ĊĊĠĠĠ ĠassertEquals (" Mixed . invoke ( 4 5 )", Ġmixed ( 4 5 )) ĊĠĠĠ ĠassertEquals (" Mixed . invoke ( 5 5 2 , Ġtrue )", Ġmixed ( 5 5 2 , Ġtrue )) ĊĠĠĠ ĠassertEquals (" ext ĠM ixed . invoke ( 2 1 , Ġtrue )", Ġ 2 1 . mixed ( true )) ĊĠĠĠ ĠassertEquals (" ext ĠM ixed . invoke ( 2 9 , Ġ 3 0 4 , Ġfalse )", Ġ 2 9 . mixed ( 3 0 4 , Ġfalse )) ĊĊĠĠĠ Ġreturn Ġ" OK " Ċ }