private void waitForRegionDestroy(Region<Object, Object> region, long p_tilt) {
    long tilt = p_tilt;
    // up until the time that the expiry fires, the entry
    // better not be null...

    for (;;) {
      long now = System.currentTimeMillis();
      if (now >= tilt) {
        break;
      }
      if (!region.isDestroyed()) {
        Wait.pause(10);
        continue;
      }
      if (now >= tilt - SLOP) {
        logger
            .warn("Region destroyed sloppily " + "now=" + now + " tilt=" + tilt + " delta = "
                + (tilt - now));
        break;
      }
      fail("Region destroyed prematurely" + "now=" + now + " tilt=" + tilt + " delta = "
          + (tilt - now));
    }

    // After the timeout passes, we will tolerate a slight
    // lag before the destroy becomes visible (due to
    // system loading)
    final int maxWaitTime = Integer.getInteger(WAIT_PROPERTY, WAIT_DEFAULT);
    tilt += maxWaitTime;
    for (;;) {
      if (region.isDestroyed()) {
        break;
      }
      Assert.assertTrue(System.currentTimeMillis() <= tilt, "Region failed to destroy");
      Wait.pause(10);
    }
  }
Since <em>tilt</em> is the earliest time we expect, one must check the current time
<em>before</em> invoking the operation intended to keep the region alive.

@param region region we want to be destroyed
@param p_tilt earliest time we expect to see the destroy
geode-dunit/src/main/java/org/apache/geode/cache30/RegionTestCase.java