package Ġcom . camp oe . android . repository . persistence Ċ Ċ import Ġio . reactivex . Maybe Ċ import Ġio . reactivex . Single Ċ import Ġjava . util . concurrent . locks . Re entrant Lock Ċ Ċ abstract Ġclass ĠData Store < K Ġ: ĠAny , ĠV Ġ: ĠAny > Ġ: ĠI DataStore < K , ĠV >, ĠRe entrant Lock () Ġ{ ĊĊĠĠĠ Ġoverride Ġfun Ġget Or Put ( key : ĠK , Ġloader : Ġ() Ġ-> ĠV ): ĠMaybe < V > Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġget Or Put ( key , Ġloader ()) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġget ( key : ĠK ): ĠMaybe < V > Ġ{ ĊĠĠĠĠĠĠĠ Ġthrow ĠNotImplementedError () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfinal Ġoverride Ġfun Ġfetch ( key : ĠK ): ĠSingle < V > Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġget ( key ). to Single () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġget Or Put ( key : ĠK , Ġvalue : ĠV ): ĠMaybe < V > Ġ{ ĊĠĠĠĠĠĠĠ Ġthrow ĠNotImplementedError () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġput ( key : ĠK , Ġvalue : ĠV ): ĠSingle < Boolean > Ġ{ ĊĠĠĠĠĠĠĠ Ġthrow ĠNotImplementedError () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġremove ( key : ĠK ): ĠMaybe < V > Ġ{ ĊĠĠĠĠĠĠĠ Ġthrow ĠNotImplementedError () ĊĠĠĠ Ġ} Ċ Ċ }