// restores nature in multiple chunks, as described by a claim instance
  // this restores all chunks which have ANY number of claim blocks from this claim in them
  // if the claim is still active (in the data store), then the claimed blocks will not be changed
  // (only the area bordering the claim)
  public void restoreClaim(Claim claim, long delayInTicks) {
    // admin claims aren't automatically cleaned up when deleted or abandoned
    if (claim.isAdminClaim()) return;

    // it's too expensive to do this for huge claims
    if (claim.getArea() > 10000) return;

    Chunk lesserChunk = claim.getLesserBoundaryCorner().getChunk();
    Chunk greaterChunk = claim.getGreaterBoundaryCorner().getChunk();

    for (int x = lesserChunk.getX(); x <= greaterChunk.getX(); x++)
      for (int z = lesserChunk.getZ(); z <= greaterChunk.getZ(); z++) {
        Chunk chunk = lesserChunk.getWorld().getChunkAt(x, z);
        this.restoreChunk(
            chunk, this.getSeaLevel(chunk.getWorld()) - 15, false, delayInTicks, null);
      }
  }