package Ġorg . ara qn id . event store . filesystem . flat pack Ċ Ċ import Ġcom . google . error pr one . annotations . Check ReturnValue Ċ import Ġjava . util . concurrent . locks . Lock Ċ import Ġjava . util . concurrent . locks . ReadWrite Lock Ċ import Ġjava . util . concurrent . locks . Re entrant ReadWrite Lock Ċ Ċ class ĠLock able Ġ{ ĊĠĠĠ Ġprivate Ġval Ġlock : ĠRead Write Lock Ġ= ĠRe entrant ReadWrite Lock () ĊĊĠĠĠ Ġprivate Ġinner Ġclass ĠResource ( private Ġval Ġlock : ĠLock ) Ġ: ĠAuto Closeable Ġ{ ĊĠĠĠĠĠĠĠ Ġinit Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġlock . lock () ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġclose () Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġlock . unlock () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Check ReturnValue ĊĠĠĠ Ġfun Ġacquire Read (): ĠAuto Closeable Ġ= ĠResource ( lock . read Lock ()) ĊĊĠĠĠ Ġ@ Check ReturnValue ĊĠĠĠ Ġfun Ġacquire Write (): ĠAuto Closeable Ġ= ĠResource ( lock . write Lock ()) Ċ } Ċ