// ĠOriginal Ġbug : ĠK T - 1 8 1 9 2 Ċ Ċ interface ĠI 1 Ċ Ċ interface ĠI 2 < T Ġ: ĠI 1 > Ċ Ċ class ĠSome Class < T Ġ: ĠI 1 , Ġout ĠU Ġ: ĠI 2 < T >> Ċ Ċ open Ġclass ĠImp l 1 < T Ġ: ĠI 1 > Ġ: ĠI 2 < T > Ġ{ ĊĠĠĠ Ġfun Ġtest (): ĠSome Class < T , ĠImp l 1 < T >> Ġ= ĠSome Class () Ċ } Ċ open Ġclass ĠImp l 2 < T Ġ: ĠI 1 > Ġ: ĠI 2 < T > Ġ{ ĊĠĠĠ Ġfun Ġtest (): ĠSome Class < T , ĠImp l 2 < T >> Ġ= ĠSome Class () Ċ } Ċ open Ġclass ĠImp l 3 < X Ġ: ĠAny , ĠT Ġ: ĠI 1 > Ġ: ĠI 2 < T > Ġ{ ĊĠĠĠ Ġfun Ġtest (): ĠSome Class < T , ĠImp l 3 < X , ĠT >> Ġ= ĠSome Class () Ċ Ċ } Ċ Ċ class ĠTest I 1 Ġ: ĠI 1 Ġ{ ĊĊĠĠĠ Ġfun Ġtest 1 (): ĠList < I 2 < Test I 1 >> Ġ= ĠlistOf ( O 1 , ĠO 2 , ĠO 3 ) ĊĊĠĠĠ Ġfun Ġtest 2 (): ĠList < Some Class < Test I 1 , ĠI 2 < Test I 1 >>> Ġ= ĠlistOf ( ĊĠĠĠĠĠĠĠ ĠO 1 . test (), ĊĠĠĠĠĠĠĠ ĠO 2 . test (), ĊĠĠĠĠĠĠĠ ĠO 3 . test () ĊĠĠĠ Ġ) ĊĊĠĠĠ Ġfun Ġtest 3 (): ĠSome Class < Test I 1 , ĠI 2 < Test I 1 >> Ġ= Ġwhen Ġ{ ĊĠĠĠĠĠĠĠ Ġtrue Ġ-> ĠO 1 . test () ĊĠĠĠĠĠĠĠ Ġfalse Ġ-> ĠO 2 . test () ĊĠĠĠĠĠĠĠ Ġelse Ġ-> ĠO 3 . test () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġobject ĠO 1 Ġ: ĠImp l 1 < Test I 1 >() ĊĠĠĠ Ġobject ĠO 2 Ġ: ĠImp l 2 < Test I 1 >() ĊĠĠĠ Ġobject ĠO 3 Ġ: ĠImp l 3 < Any , ĠTest I 1 >() Ċ } Ċ