// ĠIG NORE _ BACKEND : ĠW ASM Ċ // ĠW ASM _ M UTE _ REASON : ĠIG NO RED _ IN _ JS Ċ // ĠIG NORE _ BACKEND : ĠJS _ IR Ċ // ĠIG NORE _ BACKEND : ĠJS _ IR _ ES 6 Ċ // KT - 3 1 9 0 ĠCompiler Ġcrash Ġif Ġfunction Ġcalled Ġ' invoke ' Ġcalls Ġa Ġclosure Ċ // ĠIG NORE _ BACKEND : ĠJS Ċ // ĠJS Ġbackend Ġdoes Ġnot Ġallow Ġto Ġimplement ĠFunction { N } Ġinterfaces Ċ Ċ fun Ġbox (): ĠString Ġ{ ĊĠĠĠ Ġval Ġtest Ġ= ĠCached < Int , Int >({ Ġit Ġ+ Ġ 2 Ġ}) ĊĠĠĠ Ġreturn Ġif Ġ( test ( 1 ) Ġ== Ġ 3 ) Ġ" OK " Ġelse Ġ" fail " Ċ } Ċ Ċ class ĠCached < K , ĠV >( private Ġval Ġgenerate : Ġ( K )-> V ): ĠFunction 1 < K , ĠV > Ġ{ ĊĠĠĠ Ġval Ġstore Ġ= ĠHashMap < K , ĠV >() ĊĊĠĠĠ Ġ// ĠEverything Ġworks Ġjust Ġfine Ġif Ġ' invoke ' Ġmethod Ġis Ġrenamed Ġto , Ġfor Ġexample , Ġ' get ' ĊĠĠĠ Ġoverride Ġfun Ġinvoke ( p 1 : ĠK ) Ġ= Ġstore . get Or Put ( p 1 ) Ġ{ Ġgenerate ( p 1 ) Ġ} Ċ } Ċ Ċ // from Ġlibrary Ċ fun Ġ< K , V > ĠMutable Map < K , V >. get Or Put ( key : ĠK , ĠdefaultValue : Ġ() -> ĠV ) Ġ: ĠV Ġ{ ĊĠĠĠ Ġif Ġ( this . containsKey ( key )) Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġthis . get ( key ) Ġas ĠV ĊĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġanswer Ġ= ĠdefaultValue () ĊĠĠĠĠĠĠĠ Ġthis . put ( key , Ġanswer ) ĊĠĠĠĠĠĠĠ Ġreturn Ġanswer ĊĠĠĠ Ġ} Ċ } Ċ