enum Ġclass ĠA 1 ( val Ġprop 1 : ĠString ) Ġ{ ĊĠĠĠ ĠX : ĠA 1 (" asd ") ĊĠĠĠ ĠY : ĠA 1 () Ġ{ ĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġf () Ġ= Ġsuper . f () Ġ+ Ġ"# Y " ĊĠĠĠ Ġ} ĊĠĠĠ ĠZ : ĠA 1 ( 5 ) ĊĊĠĠĠ Ġval Ġprop 2 : ĠString Ġ= Ġ" const 2 " ĊĠĠĠ Ġvar Ġprop 3 : ĠString Ġ= Ġ"" ĊĊĠĠĠ Ġconstructor (): Ġthis (" default ") Ġ{ ĊĠĠĠĠĠĠĠ Ġprop 3 Ġ= Ġ" empty " ĊĠĠĠ Ġ} ĊĠĠĠ Ġconstructor ( x : ĠInt ): Ġthis ( x . toString ()) Ġ{ ĊĠĠĠĠĠĠĠ Ġprop 3 Ġ= Ġ" int " ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġopen Ġfun Ġf (): ĠString Ġ= Ġ"$ prop 1 #$ prop 2 #$ prop 3 " Ċ } Ċ Ċ enum Ġclass ĠA 2 Ġ{ ĊĠĠĠ ĠX : ĠA 2 (" asd ") ĊĠĠĠ ĠY : ĠA 2 () Ġ{ ĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġf () Ġ= Ġsuper . f () Ġ+ Ġ"# Y " ĊĠĠĠ Ġ} ĊĠĠĠ ĠZ : ĠA 2 ( 5 ) ĊĊĠĠĠ Ġval Ġprop 1 : ĠString ĊĠĠĠ Ġval Ġprop 2 : ĠString Ġ= Ġ" const 2 " ĊĠĠĠ Ġvar Ġprop 3 : ĠString Ġ= Ġ"" ĊĊĠĠĠ Ġconstructor ( arg : ĠString ) Ġ{ ĊĠĠĠĠĠĠĠ Ġprop 1 Ġ= Ġarg ĊĠĠĠ Ġ} ĊĠĠĠ Ġconstructor () Ġ{ ĊĠĠĠĠĠĠĠ Ġprop 1 Ġ= Ġ" default " ĊĠĠĠĠĠĠĠ Ġprop 3 Ġ= Ġ" empty " ĊĠĠĠ Ġ} ĊĠĠĠ Ġconstructor ( x : ĠInt ): Ġthis ( x . toString ()) Ġ{ ĊĠĠĠĠĠĠĠ Ġprop 3 Ġ= Ġ" int " ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġopen Ġfun Ġf (): ĠString Ġ= Ġ"$ prop 1 #$ prop 2 #$ prop 3 " Ċ } Ċ Ċ fun Ġbox (): ĠString Ġ{ ĊĠĠĠ Ġval Ġa 1 x Ġ= ĠA 1 . X ĊĠĠĠ Ġif Ġ( a 1 x . f () Ġ!= Ġ" asd # const 2 # ") Ġreturn Ġ" fail 1 : Ġ${ a 1 x . f () }" ĊĠĠĠ Ġval Ġa 1 y Ġ= ĠA 1 . Y ĊĠĠĠ Ġif Ġ( a 1 y . f () Ġ!= Ġ" default # const 2 # empty # Y ") Ġreturn Ġ" fail 2 : Ġ${ a 1 y . f () }" ĊĠĠĠ Ġval Ġa 1 z Ġ= ĠA 1 . Z ĊĠĠĠ Ġif Ġ( a 1 z . f () Ġ!= Ġ" 5 # const 2 # int ") Ġreturn Ġ" fail 3 : Ġ${ a 1 z . f () }" ĊĊĠĠĠ Ġval Ġa 2 x Ġ= ĠA 2 . X ĊĠĠĠ Ġif Ġ( a 2 x . f () Ġ!= Ġ" asd # const 2 # ") Ġreturn Ġ" fail 4 : Ġ${ a 2 x . f () }" ĊĠĠĠ Ġval Ġa 2 y Ġ= ĠA 2 . Y ĊĠĠĠ Ġif Ġ( a 2 y . f () Ġ!= Ġ" default # const 2 # empty # Y ") Ġreturn Ġ" fail 5 : Ġ${ a 2 y . f () }" ĊĠĠĠ Ġval Ġa 2 z Ġ= ĠA 2 . Z ĊĠĠĠ Ġif Ġ( a 2 z . f () Ġ!= Ġ" 5 # const 2 # int ") Ġreturn Ġ" fail 6 : Ġ${ a 2 z . f () }" ĊĊĠĠĠ Ġreturn Ġ" OK " Ċ } Ċ