code: private static synchronized Set<String> getCanonicalSystemLocationZIDs() {
          Set<String> canonicalSystemLocationZones = null;
          if (REF_CANONICAL_SYSTEM_LOCATION_ZONES != null) {
              canonicalSystemLocationZones = REF_CANONICAL_SYSTEM_LOCATION_ZONES.get();
          }
          if (canonicalSystemLocationZones == null) {
              Set<String> canonicalSystemLocationIDs = new TreeSet<String>();
              String[] allIDs = getZoneIDs();
              for (String id : allIDs) {
                  // exclude Etc/Unknown
                  if (id.equals(TimeZone.UNKNOWN_ZONE_ID)) {
                      continue;
                  }
                  String canonicalID = getCanonicalCLDRID(id);
                  if (id.equals(canonicalID)) {
                      String region = getRegion(id);
                      if (region != null && !region.equals(kWorld)) {
                          canonicalSystemLocationIDs.add(id);
                      }
                  }
              }
              canonicalSystemLocationZones = Collections.unmodifiableSet(canonicalSystemLocationIDs);
              REF_CANONICAL_SYSTEM_LOCATION_ZONES = new SoftReference<Set<String>>(canonicalSystemLocationZones);
          }
          return canonicalSystemLocationZones;
      }
docs: Returns an immutable set of canonical system time zone IDs that
  are associated with actual locations.
  The result set is a subset of {@link #getCanonicalSystemZIDs()}, but not
  including IDs, such as "Etc/GTM+5".
  @return An immutable set of canonical system time zone IDs that
  are associated with actual locations.