// ĠWITH _ STD LIB Ċ // ĠTARGET _ BACKEND : ĠJVM _ IR Ċ // ĠWORK S _ WHEN _ VALUE _ CLASS Ċ // ĠLANGUAGE : Ġ+ Value Classes Ċ Ċ OPTIONAL _ JVM _ INLINE _ AN NOT ATION Ċ value Ġclass ĠF 1 ( val Ġx : ĠInt ) Ċ Ċ OPTIONAL _ JVM _ INLINE _ AN NOT ATION Ċ value Ġclass ĠF 2 ( val Ġx : ĠUInt ) Ċ Ċ OPTIONAL _ JVM _ INLINE _ AN NOT ATION Ċ value Ġclass ĠF 3 ( val Ġx : ĠF 1 , Ġval Ġy : ĠF 2 ) Ċ Ċ OPTIONAL _ JVM _ INLINE _ AN NOT ATION Ċ value Ġclass ĠF 4 ( val Ġx : ĠInt ) Ċ Ċ OPTIONAL _ JVM _ INLINE _ AN NOT ATION Ċ value Ġclass ĠF 5 ( val Ġx : ĠUInt ) Ċ Ċ OPTIONAL _ JVM _ INLINE _ AN NOT ATION Ċ value Ġclass ĠF 6 ( val Ġx : ĠString ) Ċ Ċ OPTIONAL _ JVM _ INLINE _ AN NOT ATION Ċ value Ġclass ĠA ( ĊĠĠĠ Ġval Ġf 1 : ĠF 1 , ĊĠĠĠ Ġval Ġf 2 : ĠF 2 , ĊĠĠĠ Ġval Ġf 3 : ĠF 3 , ĊĠĠĠ Ġval Ġf 4 : ĠF 4 , ĊĠĠĠ Ġval Ġf 5 : ĠF 5 , ĊĠĠĠ Ġval Ġf 6 : ĠF 6 , ĊĠĠĠ Ġval Ġf 7 : ĠInt , ĊĠĠĠ Ġval Ġf 8 : ĠUInt , ĊĠĠĠ Ġval Ġf 9 : ĠString , Ċ ) Ċ Ċ OPTIONAL _ JVM _ INLINE _ AN NOT ATION Ċ value Ġclass ĠB ( val Ġa 1 : ĠA , Ġval Ġa 2 : ĠA ) Ġ{ ĊĠĠĠ Ġoverride Ġfun ĠtoString (): ĠString Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġ" Over rid en B ToString ( a 1 Ġ= Ġ$ a 1 , Ġa 2 Ġ= Ġ$ a 2 )" ĊĠĠĠ Ġ} Ċ } Ċ Ċ fun Ġbox (): ĠString Ġ{ ĊĠĠĠ Ġval Ġf 1 Ġ= ĠF 1 ( 1 ) ĊĠĠĠ Ġval Ġf 2 Ġ= ĠF 2 ( UInt . MAX _ VALUE ) ĊĠĠĠ Ġval Ġf 3 Ġ= ĠF 3 ( f 1 , Ġf 2 ) ĊĠĠĠ Ġval Ġf 4 Ġ= ĠF 4 ( 5 ) ĊĠĠĠ Ġval Ġf 5 Ġ= ĠF 5 ( UInt . MAX _ VALUE . dec ()) ĊĠĠĠ Ġval Ġf 6 Ġ= ĠF 6 (" 6 7 8 ") ĊĠĠĠ Ġval Ġa 1 Ġ= ĠA ( f 1 , Ġf 2 , Ġf 3 , Ġf 4 , Ġf 5 , Ġf 6 , Ġ 9 , ĠUInt . MAX _ VALUE Ġ- Ġ 2 U , Ġ" 0 ") ĊĠĠĠ Ġval Ġa 2 Ġ= ĠA ( f 1 , Ġf 2 , Ġf 3 , Ġf 4 , Ġf 5 , Ġf 6 , Ġ 9 , ĠUInt . MAX _ VALUE Ġ- Ġ 2 U , Ġ" 0 ") ĊĠĠĠ Ġval Ġb Ġ= ĠB ( a 1 , Ġa 2 ) ĊĊĠĠĠ Ġassert ( f 1 . x Ġ== Ġ 1 ) ĊĠĠĠ Ġassert ( f 2 . x Ġ== ĠUInt . MAX _ VALUE ) ĊĠĠĠ Ġassert ( f 3 . x Ġ== Ġf 1 ) ĊĠĠĠ Ġassert ( f 3 . x . x Ġ== Ġ 1 ) ĊĠĠĠ Ġassert ( f 3 . y Ġ== Ġf 2 ) ĊĠĠĠ Ġassert ( f 3 . y . x Ġ== ĠUInt . MAX _ VALUE ) ĊĠĠĠ Ġassert ( f 4 . x Ġ== Ġ 5 ) ĊĠĠĠ Ġassert ( f 5 . x Ġ== ĠUInt . MAX _ VALUE Ġ- Ġ 1 U ) ĊĠĠĠ Ġassert ( f 6 . x Ġ== Ġ" 6 7 8 ") ĊĊĠĠĠ Ġassert ( f 1 Ġ== Ġa 1 . f 1 ) ĊĠĠĠ Ġassert ( f 1 . hashCode () Ġ== Ġa 1 . f 1 . hashCode ()) ĊĠĠĠ Ġassert ( f 1 . toString () Ġ== Ġa 1 . f 1 . toString ()) ĊĠĠĠ Ġassert ( f 1 Ġ== Ġa 2 . f 1 ) ĊĠĠĠ Ġassert ( f 1 . hashCode () Ġ== Ġa 2 . f 1 . hashCode ()) ĊĠĠĠ Ġassert ( f 1 . toString () Ġ== Ġa 2 . f 1 . toString ()) ĊĠĠĠ Ġassert ( a 1 . f 1 Ġ== Ġa 2 . f 1 ) ĊĠĠĠ Ġassert ( a 1 . f 1 . hashCode () Ġ== Ġa 2 . f 1 . hashCode ()) ĊĠĠĠ Ġassert ( a 1 . f 1 . toString () Ġ== Ġa 2 . f 1 . toString ()) ĊĊĠĠĠ Ġassert ( f 2 Ġ== Ġa 1 . f 2 ) ĊĠĠĠ Ġassert ( f 2 . hashCode () Ġ== Ġa 1 . f 2 . hashCode ()) ĊĠĠĠ Ġassert ( f 2 . toString () Ġ== Ġa 1 . f 2 . toString ()) ĊĠĠĠ Ġassert ( f 2 Ġ== Ġa 2 . f 2 ) ĊĠĠĠ Ġassert ( f 2 . hashCode () Ġ== Ġa 2 . f 2 . hashCode ()) ĊĠĠĠ Ġassert ( f 2 . toString () Ġ== Ġa 2 . f 2 . toString ()) ĊĠĠĠ Ġassert ( a 1 . f 2 Ġ== Ġa 2 . f 2 ) ĊĠĠĠ Ġassert ( a 1 . f 2 . hashCode () Ġ== Ġa 2 . f 2 . hashCode ()) ĊĠĠĠ Ġassert ( a 1 . f 2 . toString () Ġ== Ġa 2 . f 2 . toString ()) ĊĊĠĠĠ Ġassert ( f 1 Ġ== Ġa 1 . f 3 . x ) ĊĠĠĠ Ġassert ( f 1 . hashCode () Ġ== Ġa 1 . f 3 . x . hashCode ()) ĊĠĠĠ Ġassert ( f 1 . toString () Ġ== Ġa 1 . f 3 . x . toString ()) ĊĠĠĠ Ġassert ( f 1 Ġ== Ġa 2 . f 3 . x ) ĊĠĠĠ Ġassert ( f 1 . hashCode () Ġ== Ġa 2 . f 3 . x . hashCode ()) ĊĠĠĠ Ġassert ( f 1 . toString () Ġ== Ġa 2 . f 3 . x . toString ()) ĊĠĠĠ Ġassert ( a 1 . f 3 . x Ġ== Ġa 2 . f 3 . x ) ĊĠĠĠ Ġassert ( a 1 . f 3 . x . hashCode () Ġ== Ġa 2 . f 3 . x . hashCode ()) ĊĠĠĠ Ġassert ( a 1 . f 3 . x . toString () Ġ== Ġa 2 . f 3 . x . toString ()) ĊĊĠĠĠ Ġassert ( f 2 Ġ== Ġa 1 . f 3 . y ) ĊĠĠĠ Ġassert ( f 2 . hashCode () Ġ== Ġa 1 . f 3 . y . hashCode ()) ĊĠĠĠ Ġassert ( f 2 . toString () Ġ== Ġa 1 . f 3 . y . toString ()) ĊĠĠĠ Ġassert ( f 2 Ġ== Ġa 2 . f 3 . y ) ĊĠĠĠ Ġassert ( f 2 . hashCode () Ġ== Ġa 2 . f 3 . y . hashCode ()) ĊĠĠĠ Ġassert ( f 2 . toString () Ġ== Ġa 2 . f 3 . y . toString ()) ĊĠĠĠ Ġassert ( a 1 . f 3 . y Ġ== Ġa 2 . f 3 . y ) ĊĠĠĠ Ġassert ( a 1 . f 3 . y . hashCode () Ġ== Ġa 2 . f 3 . y . hashCode ()) ĊĠĠĠ Ġassert ( a 1 . f 3 . y . toString () Ġ== Ġa 2 . f 3 . y . toString ()) ĊĊĠĠĠ Ġassert ( f 3 Ġ== Ġa 1 . f 3 ) ĊĠĠĠ Ġassert ( f 3 . hashCode () Ġ== Ġa 1 . f 3 . hashCode ()) ĊĠĠĠ Ġassert ( f 3 . toString () Ġ== Ġa 1 . f 3 . toString ()) ĊĠĠĠ Ġassert ( f 3 Ġ== Ġa 2 . f 3 ) ĊĠĠĠ Ġassert ( f 3 . hashCode () Ġ== Ġa 2 . f 3 . hashCode ()) ĊĠĠĠ Ġassert ( f 3 . toString () Ġ== Ġa 2 . f 3 . toString ()) ĊĠĠĠ Ġassert ( a 1 . f 3 Ġ== Ġa 2 . f 3 ) ĊĠĠĠ Ġassert ( a 1 . f 3 . hashCode () Ġ== Ġa 2 . f 3 . hashCode ()) ĊĠĠĠ Ġassert ( a 1 . f 3 . toString () Ġ== Ġa 2 . f 3 . toString ()) ĊĊĠĠĠ Ġassert ( f 4 Ġ== Ġa 1 . f 4 ) ĊĠĠĠ Ġassert ( f 4 . hashCode () Ġ== Ġa 1 . f 4 . hashCode ()) ĊĠĠĠ Ġassert ( f 4 . toString () Ġ== Ġa 1 . f 4 . toString ()) ĊĠĠĠ Ġassert ( f 4 Ġ== Ġa 2 . f 4 ) ĊĠĠĠ Ġassert ( f 4 . hashCode () Ġ== Ġa 2 . f 4 . hashCode ()) ĊĠĠĠ Ġassert ( f 4 . toString () Ġ== Ġa 2 . f 4 . toString ()) ĊĠĠĠ Ġassert ( a 1 . f 4 Ġ== Ġa 2 . f 4 ) ĊĠĠĠ Ġassert ( a 1 . f 4 . hashCode () Ġ== Ġa 2 . f 4 . hashCode ()) ĊĠĠĠ Ġassert ( a 1 . f 4 . toString () Ġ== Ġa 2 . f 4 . toString ()) ĊĊĠĠĠ Ġassert ( f 5 Ġ== Ġa 1 . f 5 ) ĊĠĠĠ Ġassert ( f 5 . hashCode () Ġ== Ġa 1 . f 5 . hashCode ()) ĊĠĠĠ Ġassert ( f 5 . toString () Ġ== Ġa 1 . f 5 . toString ()) ĊĠĠĠ Ġassert ( f 5 Ġ== Ġa 2 . f 5 ) ĊĠĠĠ Ġassert ( f 5 . hashCode () Ġ== Ġa 2 . f 5 . hashCode ()) ĊĠĠĠ Ġassert ( f 5 . toString () Ġ== Ġa 2 . f 5 . toString ()) ĊĠĠĠ Ġassert ( a 1 . f 5 Ġ== Ġa 2 . f 5 ) ĊĠĠĠ Ġassert ( a 1 . f 5 . hashCode () Ġ== Ġa 2 . f 5 . hashCode ()) ĊĠĠĠ Ġassert ( a 1 . f 5 . toString () Ġ== Ġa 2 . f 5 . toString ()) ĊĊĠĠĠ Ġassert ( f 6 Ġ== Ġa 1 . f 6 ) ĊĠĠĠ Ġassert ( f 6 . hashCode () Ġ== Ġa 1 . f 6 . hashCode ()) ĊĠĠĠ Ġassert ( f 6 . toString () Ġ== Ġa 1 . f 6 . toString ()) ĊĠĠĠ Ġassert ( f 6 Ġ== Ġa 2 . f 6 ) ĊĠĠĠ Ġassert ( f 6 . hashCode () Ġ== Ġa 2 . f 6 . hashCode ()) ĊĠĠĠ Ġassert ( f 6 . toString () Ġ== Ġa 2 . f 6 . toString ()) ĊĠĠĠ Ġassert ( a 1 . f 6 Ġ== Ġa 2 . f 6 ) ĊĠĠĠ Ġassert ( a 1 . f 6 . hashCode () Ġ== Ġa 2 . f 6 . hashCode ()) ĊĠĠĠ Ġassert ( a 1 . f 6 . toString () Ġ== Ġa 2 . f 6 . toString ()) ĊĊĠĠĠ Ġassert ( 9 Ġ== Ġa 1 . f 7 ) ĊĠĠĠ Ġassert ( 9 . hashCode () Ġ== Ġa 1 . f 7 . hashCode ()) ĊĠĠĠ Ġassert ( 9 . toString () Ġ== Ġa 1 . f 7 . toString ()) ĊĠĠĠ Ġassert ( 9 Ġ== Ġa 2 . f 7 ) ĊĠĠĠ Ġassert ( 9 . hashCode () Ġ== Ġa 2 . f 7 . hashCode ()) ĊĠĠĠ Ġassert ( 9 . toString () Ġ== Ġa 2 . f 7 . toString ()) ĊĠĠĠ Ġassert ( a 1 . f 7 Ġ== Ġa 2 . f 7 ) ĊĠĠĠ Ġassert ( a 1 . f 7 . hashCode () Ġ== Ġa 2 . f 7 . hashCode ()) ĊĠĠĠ Ġassert ( a 1 . f 7 . toString () Ġ== Ġa 2 . f 7 . toString ()) ĊĊĠĠĠ Ġassert (( UInt . MAX _ VALUE Ġ- Ġ 2 U ) Ġ== Ġa 1 . f 8 ) ĊĠĠĠ Ġassert (( UInt . MAX _ VALUE Ġ- Ġ 2 U ). hashCode () Ġ== Ġa 1 . f 8 . hashCode ()) ĊĠĠĠ Ġassert (( UInt . MAX _ VALUE Ġ- Ġ 2 U ). toString () Ġ== Ġa 1 . f 8 . toString ()) ĊĠĠĠ Ġassert (( UInt . MAX _ VALUE Ġ- Ġ 2 U ) Ġ== Ġa 2 . f 8 ) ĊĠĠĠ Ġassert (( UInt . MAX _ VALUE Ġ- Ġ 2 U ). hashCode () Ġ== Ġa 2 . f 8 . hashCode ()) ĊĠĠĠ Ġassert (( UInt . MAX _ VALUE Ġ- Ġ 2 U ). toString () Ġ== Ġa 2 . f 8 . toString ()) ĊĠĠĠ Ġassert ( a 1 . f 8 Ġ== Ġa 2 . f 8 ) ĊĠĠĠ Ġassert ( a 1 . f 8 . hashCode () Ġ== Ġa 2 . f 8 . hashCode ()) ĊĠĠĠ Ġassert ( a 1 . f 8 . toString () Ġ== Ġa 2 . f 8 . toString ()) ĊĊĠĠĠ Ġassert (" 0 " Ġ== Ġa 1 . f 9 ) ĊĠĠĠ Ġassert (" 0 ". hashCode () Ġ== Ġa 1 . f 9 . hashCode ()) ĊĠĠĠ Ġassert (" 0 ". toString () Ġ== Ġa 1 . f 9 . toString ()) ĊĠĠĠ Ġassert (" 0 " Ġ== Ġa 2 . f 9 ) ĊĠĠĠ Ġassert (" 0 ". hashCode () Ġ== Ġa 2 . f 9 . hashCode ()) ĊĠĠĠ Ġassert (" 0 ". toString () Ġ== Ġa 2 . f 9 . toString ()) ĊĠĠĠ Ġassert ( a 1 . f 9 Ġ== Ġa 2 . f 9 ) ĊĠĠĠ Ġassert ( a 1 . f 9 . hashCode () Ġ== Ġa 2 . f 9 . hashCode ()) ĊĠĠĠ Ġassert ( a 1 . f 9 . toString () Ġ== Ġa 2 . f 9 . toString ()) ĊĊĊĠĠĠ Ġassert ( a 1 Ġ== Ġa 2 ) ĊĠĠĠ Ġassert ( a 1 . hashCode () Ġ== Ġa 2 . hashCode ()) ĊĠĠĠ Ġassert ( a 1 . toString () Ġ== Ġa 2 . toString ()) ĊĊĠĠĠ Ġassert ( b Ġ== Ġb ) ĊĠĠĠ Ġassert ( b . toString () Ġ== Ġb . toString ()) ĊĠĠĠ Ġassert ( b . hashCode () Ġ== Ġb . hashCode ()) ĊĊĊĠĠĠ Ġassert ( f 1 . toString () Ġ== Ġ" F 1 ( x = 1 )") Ġ{ Ġf 1 . toString () Ġ} ĊĠĠĠ Ġassert ( f 2 . toString () Ġ== Ġ" F 2 ( x = 4 2 9 4 9 6 7 2 9 5 )") Ġ{ Ġf 2 . toString () Ġ} ĊĠĠĠ Ġassert ( f 3 . toString () Ġ== Ġ" F 3 ( x = F 1 ( x = 1 ), Ġy = F 2 ( x = 4 2 9 4 9 6 7 2 9 5 )) ") Ġ{ Ġf 3 . toString () Ġ} ĊĠĠĠ Ġassert ( f 4 . toString () Ġ== Ġ" F 4 ( x = 5 )") Ġ{ Ġf 4 . toString () Ġ} ĊĠĠĠ Ġassert ( f 5 . toString () Ġ== Ġ" F 5 ( x = 4 2 9 4 9 6 7 2 9 4 )") Ġ{ Ġf 5 . toString () Ġ} ĊĠĠĠ Ġassert ( f 6 . toString () Ġ== Ġ" F 6 ( x = 6 7 8 )") Ġ{ Ġf 6 . toString () Ġ} ĊĠĠĠ Ġval Ġa Str Ġ= Ġ" A ( f 1 = F 1 ( x = 1 ), Ġf 2 = F 2 ( x = 4 2 9 4 9 6 7 2 9 5 ), Ġf 3 = F 3 ( x = F 1 ( x = 1 ), Ġy = F 2 ( x = 4 2 9 4 9 6 7 2 9 5 )), Ġf 4 = F 4 ( x = 5 ), Ġf 5 = F 5 ( x = 4 2 9 4 9 6 7 2 9 4 ), Ġf 6 = F 6 ( x = 6 7 8 ), Ġf 7 = 9 , Ġf 8 = 4 2 9 4 9 6 7 2 9 3 , Ġf 9 = 0 )" ĊĠĠĠ Ġassert ( a 1 . toString () Ġ== Ġa Str ) Ġ{ Ġa 1 . toString () Ġ} ĊĠĠĠ Ġassert ( a 2 . toString () Ġ== Ġa Str ) Ġ{ Ġa 2 . toString () Ġ} ĊĠĠĠ Ġassert ( b . toString () Ġ== Ġ" Over rid en B ToString ( a 1 Ġ= Ġ$ a Str , Ġa 2 Ġ= Ġ$ a Str )") Ġ{ Ġb . toString () Ġ} ĊĊĠĠĠ Ġreturn Ġ" OK " Ċ } Ċ