class ĠThing Template Ġ{ Ċ val ĠString . prop Ġ= Ġ 0 Ċ } Ċ annotation Ġclass ĠThing Val ( template : ĠThing Template ) Ġ{ Ċ val ĠAny . prop Ġ= Ġtemplate . prop Ċ } Ċ class ĠThing Var ( template : ĠThing Template ) Ġ{ Ċ var Ġprop Ġ= Ġtemplate . prop Ċ } Ċ fun Ġbox (): ĠString Ġ{ Ċ val Ġtemplate Ġ= ĠThing Template () Ċ val Ġjava Class Ġ= ĠThing Template :: class . java Ċ val Ġfield Ġ= Ġjava Class . getDeclared Field (" prop ") !! Ċ field . is Accessible Ġ= Ġtrue Ċ field . set ( template , Ġ 1 ) Ċ val Ġthing Val Ġ= ĠThing Val ( template ) Ċ if Ġ( thing Val . prop Ġ!= Ġ 1 ) Ġ{ Ċ return Ġ" fail Ġ 1 " Ċ } Ċ val Ġthing Var Ġ= ĠThing Var ( template ) Ċ if Ġ( thing Var . prop Ġ!= Ġ 1 ) Ġ{ Ċ return Ġ" fail Ġ 2 " Ċ } Ċ return Ġ" OK " Ċ }