// Ġ! LANGUAGE : Ġ+ New Inference Ċ Ċ open Ġclass ĠA < T 1 , ĠT 2 > Ġ{ ĊĠĠĠ Ġopen Ġinner Ġclass ĠA 1 ( val Ġa 1 : ĠT 1 ) ĊĠĠĠ Ġopen Ġinner Ġclass ĠA 2 ( val Ġa 2 : ĠT 2 ) ĊĊĠĠĠ Ġopen Ġfun Ġf 1 ( arg : ĠT 1 ) Ġ= Ġarg ĊĠĠĠ Ġopen Ġfun Ġf 2 ( arg : ĠT 2 ) Ġ= Ġarg Ċ } Ċ Ċ open Ġclass ĠB < T > Ġ: ĠA < T , ĠInt >() Ġ{ ĊĠĠĠ Ġopen Ġinner Ġclass ĠB 1 ( b 1 : ĠT ) Ġ: ĠA 1 ( b 1 ) ĊĠĠĠ Ġopen Ġinner Ġclass ĠB 2 ( b 2 : ĠInt ) Ġ: ĠA 2 ( b 2 ) ĊĊĠĠĠ Ġfun Ġvariable To Known Parameter ( p : ĠT ): ĠInt Ġ= ĊĠĠĠĠĠĠĠ Ġp Ġas ? ĠInt Ġ?: Ġ 0 ĊĊĠĠĠ Ġinner Ġclass ĠB 3 ( b 3 : ĠT ) Ġ: ĠA 2 ( variable To Known Parameter ( b 3 )) ĊĊĠĠĠ Ġoverride Ġfun Ġf 1 ( arg : ĠT ) Ġ= Ġarg ĊĠĠĠ Ġoverride Ġfun Ġf 2 ( arg : ĠInt ) Ġ= Ġarg Ċ } Ċ Ċ class ĠC Ġ: ĠB < String >() Ġ{ ĊĠĠĠ Ġinner Ġclass ĠC 1 ( c 1 : ĠString ): ĠB 1 ( c 1 ) ĊĠĠĠ Ġinner Ġclass ĠC 2 Ġ: ĠB 2 ( 1 5 ) ĊĊĠĠĠ Ġoverride Ġfun Ġf 1 ( arg : ĠString ) Ġ= Ġarg ĊĠĠĠ Ġoverride Ġfun Ġf 2 ( arg : ĠInt ) Ġ= Ġarg Ċ } Ċ