// ĠOriginal Ġbug : ĠK T - 8 2 4 4 Ċ Ċ package Ġlab Ċ Ċ open Ġclass ĠAbstract StateMachine () Ġ{ ĊĊĠ Ġopen Ġfun Ġreact ( input : ĠInt ): ĠInt Ġ{ ĊĠĠĠ Ġprintln (" Abstract StateMachine . react : Ġthis =$ this ") ĊĠĠĠ Ġreturn Ġinput Ġ* Ġ 1 ĊĠ Ġ} Ċ Ċ } Ċ Ċ class ĠFoo StateMachine (): ĠAbstract StateMachine () Ġ{ ĊĊĠ Ġoverride Ġfun Ġreact ( input : ĠInt ): ĠInt Ġ{ ĊĠĠĠ Ġprintln (" Foo StateMachine . react : Ġthis =$ this ") ĊĠĠĠ Ġreturn Ġinput Ġ+ Ġ 2 ĊĠ Ġ} Ċ Ċ } Ċ Ċ class ĠBar StateMachine (): ĠAbstract StateMachine () Ġ{ ĊĊĠ Ġoverride Ġfun Ġreact ( input : ĠInt ): ĠInt Ġ{ ĊĠĠĠ Ġprintln (" Bar StateMachine . react : Ġthis =$ this ") ĊĠĠĠ Ġreturn Ġinput Ġ+ Ġ 3 ĊĠ Ġ} Ċ Ċ } Ċ Ċ fun Ġmain ( args : ĠArray < String >) Ġ{ ĊĊĠ Ġval Ġsm : ĠAbstract StateMachine Ġ= ĠFoo StateMachine () ĊĠ Ġprintln (" sm Ġ= Ġ$ sm ") ĊĊĠ Ġval Ġfn : Ġ(( Abstract StateMachine , ĠInt ) Ġ-> ĠInt ) Ġ= ĠAbstract StateMachine :: react ĊĠ Ġprintln (" fn Ġ= Ġ$ fn ") ĊĊĠ Ġval Ġresult Ġ= Ġfn ( sm , Ġ 7 ) ĊĠ Ġprintln (" result Ġ= Ġ$ result ") Ċ Ċ } Ċ