code: private static synchronized Set<String> getCanonicalSystemZIDs() {
          Set<String> canonicalSystemZones = null;
          if (REF_CANONICAL_SYSTEM_ZONES != null) {
              canonicalSystemZones = REF_CANONICAL_SYSTEM_ZONES.get();
          }
          if (canonicalSystemZones == null) {
              Set<String> canonicalSystemIDs = 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)) {
                      canonicalSystemIDs.add(id);
                  }
              }
              canonicalSystemZones = Collections.unmodifiableSet(canonicalSystemIDs);
              REF_CANONICAL_SYSTEM_ZONES = new SoftReference<Set<String>>(canonicalSystemZones);
          }
          return canonicalSystemZones;
      }
docs: Returns an immutable set of canonical system time zone IDs.
  The result set is a subset of {@link #getSystemZIDs()}, but not
  including aliases, such as "US/Eastern".
  @return An immutable set of canonical system time zone IDs.