this attempts to handle the rather bizarre lock cache semantics in