// ĠMODULE : Ġlib Ċ // ĠFILE : ĠA . kt Ċ // ĠVERSION : Ġ 1 Ċ Ċ interface ĠA Ġ{ ĊĠĠĠ Ġfun Ġfoo (): ĠString ĊĠĠĠ Ġval Ġbar : ĠString Ċ } Ċ Ċ class ĠX ( val Ġa : ĠString , Ġvar Ġb : ĠString ) Ġ{ ĊĠĠĠ Ġfun Ġfoo (): ĠString Ġ= Ġ" original Ġclass ' Ġmethod " ĊĠĠĠ Ġval Ġbar : ĠString Ġ= Ġ" original Ġclass ' Ġproperty " Ċ } Ċ Ċ // ĠFILE : ĠB . kt Ċ // ĠVERSION : Ġ 2 Ċ Ċ interface ĠA Ġ{ ĊĠĠĠ Ġfun Ġfoo (): ĠString ĊĠĠĠ Ġval Ġbar : ĠString Ċ } Ċ Ċ data Ġclass ĠX ( val Ġa : ĠString , Ġvar Ġb : ĠString ) Ġ{ ĊĠĠĠ Ġfun Ġfoo (): ĠString Ġ= Ġa Ġ+ Ġb ĊĠĠĠ Ġval Ġbar : ĠString Ġ= Ġb Ġ+ Ġa Ċ } Ċ Ċ // ĠMODULE : Ġmain Lib ( lib ) Ċ // ĠFILE : Ġmain Lib . kt Ċ Ċ fun Ġlib (): ĠString Ġ{ ĊĠĠĠ Ġval Ġx Ġ= ĠX (" first ", Ġ" second ") ĊĠĠĠ Ġreturn Ġwhen Ġ{ ĊĠĠĠĠĠĠĠ Ġx . a Ġ!= Ġ" first " Ġ-> Ġ" fail Ġ 1 " ĊĠĠĠĠĠĠĠ Ġx . b Ġ!= Ġ" second " Ġ-> Ġ" fail Ġ 2 " ĊĠĠĠĠĠĠĠ Ġx . foo () Ġ!= Ġ" first second " Ġ-> Ġ" fail Ġ 3 " ĊĠĠĠĠĠĠĠ Ġx . bar Ġ!= Ġ" second first " Ġ-> Ġ" fail Ġ 4 " ĊĠĠĠĠĠĠĠ Ġx . toString () Ġ!= Ġ" X ( a = first , Ġb = second )" Ġ-> Ġ" fail Ġ 5 " ĊĠĠĠĠĠĠĠ Ġelse Ġ-> Ġ" OK " ĊĠĠĠ Ġ} Ċ } Ċ Ċ // ĠMODULE : Ġmain ( main Lib ) Ċ // ĠFILE : Ġmain . kt Ċ fun Ġbox (): ĠString Ġ= Ġlib () ĊĊ