if (!Iterables.all(regionsOrJustProvider, LocationPredicates.isProvider()))
locations.addAll(regionsOrJustProvider);
for (Map.Entry<String, Location> entry : zoneIdToParent.entrySet()) {
String zoneId = entry.getKey();
Location parent = entry.getValue();
LocationBuilder builder = new LocationBuilder().scope(LocationScope.ZONE).id(zoneId).description(zoneId)
.parent(parent);
if (isoCodesById.containsKey(zoneId))
builder.iso3166Codes(isoCodesById.get(zoneId).get());
// be cautious.. only inherit iso codes if the parent is a region
// regions may be added dynamically, and we prefer to inherit an
// empty set of codes from a region, then a provider, whose code
// are likely hard-coded.
else if (parent.getScope() == LocationScope.REGION)
builder.iso3166Codes(parent.getIso3166Codes());
locations.add(builder.build());
}
return locations.build();
}