// ĠOriginal Ġbug : ĠK T - 4 2 5 2 6 Ċ Ċ interface ĠA Ċ interface ĠB Ġ: ĠA Ċ Ċ open Ġclass ĠC < T Ġ: ĠAny , ĠR : ĠAny > Ġ{ ĊĠĠĠ Ġopen Ġfun Ġfoo ( t : ĠT ): ĠUnit Ġ= Ġprintln (" C . foo Ġ" Ġ+ Ġt :: class . simple Name ) ĊĠĠĠ Ġopen Ġfun Ġbar ( t : ĠR ): ĠUnit Ġ= Ġprintln (" C . bar Ġ" Ġ+ Ġt :: class . simple Name ) ĊĠĠĠ Ġfun Ġtest 1 ( t : Ġ@ Unsafe Variance ĠT , Ġr : Ġ@ Unsafe Variance ĠR ) Ġ{ ĊĠĠĠĠĠĠĠ Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfoo ( t ) ĊĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( e : ĠThrowable ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġprintln (" caught Ġfrom Ġfoo ") ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġbar ( r ) ĊĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( e : ĠThrowable ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġprintln (" caught Ġfrom Ġbar ") ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĠĠĠ Ġfun Ġtest 2 ( t : ĠAny , Ġr : ĠAny ) Ġ{ ĊĠĠĠĠĠĠĠ Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfoo ( t Ġas ĠT ) ĊĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( e : ĠThrowable ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġprintln (" caught Ġfrom Ġfoo ") ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġbar ( r Ġas ĠR ) ĊĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( e : ĠThrowable ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġprintln (" caught Ġfrom Ġbar ") ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ } Ċ Ċ class ĠD < T Ġ: ĠA > Ġ: ĠC < T , ĠA >() Ġ{ ĊĠĠĠ Ġoverride Ġfun Ġfoo ( t : ĠT ): ĠUnit Ġ= Ġprintln (" D . foo Ġ" Ġ+ Ġt :: class . simple Name ) ĊĠĠĠ Ġoverride Ġfun Ġbar ( t : ĠA ): ĠUnit Ġ= Ġprintln (" D . bar Ġ" Ġ+ Ġt :: class . simple Name ) Ċ } Ċ Ċ fun Ġmain () Ġ{ ĊĠĠĠ Ġval Ġd Ġ= ĠD < A >() ĊĠĠĠ Ġval Ġc : ĠC < out ĠAny , Ġout ĠAny > Ġ= Ġd ĊĠĠĠ Ġc . test 1 ( Any (), ĠAny ()) ĊĠĠĠ Ġc . test 2 ( Any (), ĠAny ()) Ċ } Ċ