private void givenExistingEntryWithTokenAndVersionTag(Token token) {
    if (token == Token.REMOVED_PHASE2) {
      when(regionMap.getEntry(event)).thenReturn(existingRegionEntry).thenReturn(null);
      when(regionMap.putEntryIfAbsent(KEY, newRegionEntry)).thenReturn(null);
      when(existingRegionEntry.isRemovedPhase2()).thenReturn(true);
      when(existingRegionEntry.isRemoved()).thenReturn(true);
      when(existingRegionEntry.isDestroyedOrRemoved()).thenReturn(true);
      when(existingRegionEntry.isInvalidOrRemoved()).thenReturn(true);
      when(existingRegionEntry.isDestroyedOrRemovedButNotTombstone()).thenReturn(true);
    } else {
      throw new IllegalArgumentException("unexpected token: " + token);
    }
    givenEventWithVersionTag();
  }
instead of a TOMBSTONE we leave an evictableEntry whose value is REMOVE_PHASE1 this looks like
a bug. It is caused by some code in: AbstractRegionEntry.destroy() that calls removePhase1 when
the versionTag is null. It seems like this code path needs to tell the higher levels to call
removeEntry
geode-core/src/test/java/org/apache/geode/internal/cache/map/RegionMapDestroyTest.java