I think you need newMap.put because this might also cause an eviction in the underlying cache you are wrapping.  I dont think this code is handling that case.