code: private static TimeZone getCustomTimeZone(String id) {
          Matcher m = NoImagePreloadHolder.CUSTOM_ZONE_ID_PATTERN.matcher(id);
          if (!m.matches()) {
              return null;
          }
  
          int hour;
          int minute = 0;
          try {
              hour = Integer.parseInt(m.group(1));
              if (m.group(3) != null) {
                  minute = Integer.parseInt(m.group(3));
              }
          } catch (NumberFormatException impossible) {
              throw new AssertionError(impossible);
          }
  
          if (hour < 0 || hour > 23 || minute < 0 || minute > 59) {
              return null;
          }
  
          char sign = id.charAt(3);
          int raw = (hour * 3600000) + (minute * 60000);
          if (sign == '-') {
              raw = -raw;
          }
  
          String cleanId = String.format(Locale.ROOT, "GMT%c%02d:%02d", sign, hour, minute);
  
          return new SimpleTimeZone(raw, cleanId);
      }
docs: Returns a new SimpleTimeZone for an ID of the form "GMT[+|-]hh[[:]mm]", or null.