import ĠA AA Ġas ĠA Ċ public Ġclass ĠX ( bar : ĠString ? Ġ= ĠA . BAR ): ĠA () Ġ{ ĊĠĠĠ Ġvar Ġnext : ĠA ? Ġ= ĠA () ĊĠĠĠ Ġval Ġmy Bar : ĠString ? Ġ= ĠA . BAR ĊĊĠĠĠ Ġinit Ġ{ ĊĠĠĠĠĠĠĠ ĠA . BAR Ġ= Ġ"" ĊĠĠĠĠĠĠĠ ĠA AA . fo os () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġfoo ( a : ĠA ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġaa : ĠA AA Ġ= Ġa ĊĠĠĠĠĠĠĠ Ġaa . bar Ġ= Ġ"" ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun ĠgetNext (): ĠA ? Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġnext ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġpublic Ġoverride Ġfun Ġfoo () Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper < A >. foo () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġcompanion Ġobject : ĠA AA () Ġ{ ĊĊĠĠĠ Ġ} Ċ } Ċ Ċ object ĠO : ĠA () Ġ{ Ċ Ċ } Ċ Ċ fun ĠX . bar ( a : ĠA Ġ= ĠA ()) Ġ{ Ċ Ċ } Ċ Ċ fun ĠAny . to A (): ĠA ? Ġ{ ĊĠĠĠ Ġreturn Ġif Ġ( this Ġis ĠA ) Ġthis Ġas ĠA Ġelse Ġnull Ċ }