package Ġcom . jacob t read . al to . utils . collect Ċ Ċ class ĠC aching Map < K , ĠV > Ġ: ĠHashMap < K , ĠV >() Ġ{ ĊĊĠĠĠ Ġvar Ġdirty Ġ= Ġfalse ĊĠĠĠ Ġvar Ġcached Contents Ġ= ĠArrayList < V >() ĊĊĠĠĠ Ġoverride Ġval Ġvalues : ĠMutable Collection < V > ĊĠĠĠĠĠĠĠ Ġget () Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( dirty ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcached Contents . clear () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcached Contents . addAll ( super . values ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdirty Ġ= Ġfalse ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġcached Contents ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġclear () Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . clear () ĊĠĠĠĠĠĠĠ Ġdirty Ġ= Ġtrue ĊĠĠĠĠĠĠĠ Ġcached Contents . clear () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġput ( key : ĠK , Ġvalue : ĠV ): ĠV ? Ġ{ ĊĠĠĠĠĠĠĠ Ġdirty Ġ= Ġtrue ĊĠĠĠĠĠĠĠ Ġreturn Ġsuper . put ( key , Ġvalue ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġremove ( key : ĠK ): ĠV ? Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġremoved Ġ= Ġsuper . remove ( key ) ĊĠĠĠĠĠĠĠ Ġif Ġ( removed Ġ!= Ġnull ) Ġdirty Ġ= Ġtrue ĊĠĠĠĠĠĠĠ Ġreturn Ġremoved ĊĠĠĠ Ġ} Ċ Ċ }