package Ġcom . ve o sp s . game . models . vars Ċ Ċ class ĠV arp Map ( ĊĠĠĠ Ġprivate Ġval Ġvar ps : ĠMutable Map < Int , ĠInt > Ġ= Ġmutable Map Of () Ċ ) Ġ: ĠMap < Int , ĠInt > Ġby Ġvar ps Ġ{ ĊĊĠĠĠ Ġoverride Ġfun Ġget ( key : ĠInt ): ĠInt ? Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġvar ps [ key ] ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoperator Ġfun Ġset ( key : ĠInt , Ġvalue : ĠInt ): ĠInt ? Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( value Ġ== Ġ 0 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġvar ps . remove ( key ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġreturn Ġvar ps . put ( key , Ġvalue ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun ĠforEach ( action : Ġ( Map . Entry < Int , ĠInt >) Ġ-> ĠUnit ) Ġ{ ĊĠĠĠĠĠĠĠ Ġvar ps . forEach ( action ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠCreates Ġa Ġdeep - copy Ġof Ġthis Ġ[ Var p Map ]. ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġcopy (): ĠV arp Map Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġmap Ġ= Ġvar ps . entries . associate Ġ{ Ġ( k , Ġv ) Ġ-> Ġk Ġto Ġv Ġ} Ġas ĠMutable Map ĊĠĠĠĠĠĠĠ Ġreturn ĠV arp Map ( map ) ĊĠĠĠ Ġ} Ċ } Ċ