package Ġb aa ah s . util Ċ Ċ import Ġb aa ah s . unknown Ċ Ċ class ĠCache Builder < K , ĠV >( val Ġcreate Fn : Ġ( K ) Ġ-> ĠV ) Ġ{ ĊĠĠĠ Ġprivate Ġval Ġmap Ġ= Ġmutable Map Of < K , ĠV >() ĊĊĠĠĠ Ġval Ġall : ĠMap < K , ĠV > Ġget () Ġ= Ġmap ĊĠĠĠ Ġval Ġkeys : ĠCollection < K > Ġget () Ġ= Ġmap . keys ĊĠĠĠ Ġval Ġvalues : ĠCollection < V > Ġget () Ġ= Ġmap . values ĊĊĠĠĠ Ġoperator Ġfun Ġget ( key : ĠK ): ĠV Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġmap . get Or Put ( key ) Ġ{ Ġcreate Fn ( key ) Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġget Bang ( key : ĠK , Ġtype : ĠString ): ĠV Ġ= Ġget ( key ) Ġ?: Ġerror ( unknown ( type , Ġkey , Ġmap . keys )) Ċ }