@Override
  public ApplicableRegionSet getApplicableRegions(ProtectedRegion checkRegion) {

    List<ProtectedRegion> appRegions = new ArrayList<ProtectedRegion>();
    appRegions.addAll(regions.values());

    List<ProtectedRegion> intersectRegions;

    try {
      intersectRegions = checkRegion.getIntersectingRegions(appRegions);
    } catch (Exception e) {
      intersectRegions = new ArrayList<ProtectedRegion>();
    }

    return new ApplicableRegionSet(intersectRegions, regions.get("__global__"));
  }
  @Override
  public boolean overlapsUnownedRegion(ProtectedRegion checkRegion, LocalPlayer player) {
    List<ProtectedRegion> appRegions = new ArrayList<ProtectedRegion>();

    for (ProtectedRegion other : regions.values()) {
      if (other.getOwners().contains(player)) {
        continue;
      }

      appRegions.add(other);
    }

    List<ProtectedRegion> intersectRegions;
    try {
      intersectRegions = checkRegion.getIntersectingRegions(appRegions);
    } catch (UnsupportedIntersectionException e) {
      intersectRegions = new ArrayList<ProtectedRegion>();
    }

    return intersectRegions.size() > 0;
  }