it now makes more sense to return a boolean for isLockedExclusivelyBy() from the lock() method, to make it easier to reason about the atomic-ness of the operation