@Test
  public void destroyDoesNotLockGIIClearLockWhenRegionIsInitialized()
      throws Exception {
    DistributedRegion region = mock(DistributedRegion.class, RETURNS_DEEP_STUBS);
    when(region.isInitialized()).thenReturn(true);
    when(region.lockWhenRegionIsInitializing()).thenCallRealMethod();
    RegionMapDestroy mapDestroy =
        new RegionMapDestroy(region, regionMap, mock(CacheModificationLock.class));

    mapDestroy.destroy(event, inTokenMode, duringRI, cacheWrite, isEviction,
        expectedOldValue, removeRecoveredEntry);

    verify(region).lockWhenRegionIsInitializing();
    assertThat(region.lockWhenRegionIsInitializing()).isFalse();
    verify(region, never()).unlockWhenRegionIsInitializing();
  }
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