package Ġcom . ion sof imag ination . k lox Ċ Ċ class ĠL ox Class ( val Ġname : ĠString , Ġprivate Ġval Ġsuperclass : ĠL ox Class ?, Ġmethods : ĠMap < String , ĠL ox Function >) Ġ: ĠL ox Callable Ġ{ ĊĠĠĠ Ġprivate Ġval Ġmethods : ĠMutable Map < String , ĠL ox Function > ĊĊĠĠĠ Ġinit Ġ{ ĊĠĠĠĠĠĠĠ Ġthis . methods Ġ= ĠHashMap ( methods ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġfind Method ( name : ĠString ): ĠL ox Function ? Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġwhen Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġmethods . containsKey ( name ) Ġ-> Ġmethods [ name ] ĊĠĠĠĠĠĠĠĠĠĠĠ Ġsuperclass Ġ!= Ġnull Ġ-> Ġsuperclass . find Method ( name ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ-> Ġnull ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun ĠtoString (): ĠString Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġname ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġcall ( interpreter : ĠInterpreter , Ġarguments : ĠList < Any ?> ): ĠAny Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġinstance Ġ= ĠL ox Instance ( this ) ĊĠĠĠĠĠĠĠ Ġ// ĠRun Ġinitializer . ĊĠĠĠĠĠĠĠ Ġfind Method (" init ") ?. bind ( instance )?. call ( interpreter , Ġarguments ) ĊĠĠĠĠĠĠĠ Ġreturn Ġinstance ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġar ity (): ĠInt Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġfind Method (" init ") ?. arity () Ġ?: Ġ 0 ĊĠĠĠ Ġ} Ċ Ċ }