code: private static TimeZone getTimeZone(String id, int type, boolean frozen) {
          TimeZone result;
          if (type == TIMEZONE_JDK) {
              result = JavaTimeZone.createTimeZone(id);
              if (result != null) {
                  return frozen ? result.freeze() : result;
              }
              result = getFrozenICUTimeZone(id, false);
          } else {
              result = getFrozenICUTimeZone(id, true);
          }
          if (result == null) {
              LOGGER.fine("\"" +id + "\" is a bogus id so timezone is falling back to Etc/Unknown(GMT).");
              result = UNKNOWN_ZONE;
          }
          return frozen ? result : result.cloneAsThawed();
      }
docs: Gets the <code>TimeZone</code> for the given ID and the timezone type.
  @param id time zone ID
  @param type time zone implementation type, TIMEZONE_JDK or TIMEZONE_ICU
  @param frozen specify if the returned object can be frozen
  @return the specified <code>TimeZone</code> or UNKNOWN_ZONE if the given ID
  cannot be understood.