code: public static JavaTimeZone createTimeZone(String id) {
          java.util.TimeZone jtz = null;
  
          if (AVAILABLESET.contains(id)) {
              jtz = java.util.TimeZone.getTimeZone(id);
          }
  
          if (jtz == null) {
              // Use ICU's canonical ID mapping
              boolean[] isSystemID = new boolean[1];
              String canonicalID = TimeZone.getCanonicalID(id, isSystemID);
              if (isSystemID[0] && AVAILABLESET.contains(canonicalID)) {
                  jtz = java.util.TimeZone.getTimeZone(canonicalID);
              }
          }
  
          if (jtz == null) {
              return null;
          }
  
          return new JavaTimeZone(jtz, id);
      }
docs: Creates an instance of JavaTimeZone with the given timezone ID.
  @param id A timezone ID, either a system ID or a custom ID.
  @return An instance of JavaTimeZone for the given ID, or null
  when the ID cannot be understood.