code: private synchronized void initializeTimeZoneFormat(boolean bForceUpdate) {
          if (bForceUpdate || tzFormat == null) {
              tzFormat = TimeZoneFormat.getInstance(locale);
  
              String digits = null;
              if (numberFormat instanceof DecimalFormat) {
                  DecimalFormatSymbols decsym = ((DecimalFormat) numberFormat).getDecimalFormatSymbols();
                  digits = new String(decsym.getDigits());
              } else if (numberFormat instanceof DateNumberFormat) {
                  digits = new String(((DateNumberFormat)numberFormat).getDigits());
              }
  
              if (digits != null) {
                  if (!tzFormat.getGMTOffsetDigits().equals(digits)) {
                      if (tzFormat.isFrozen()) {
                          tzFormat = tzFormat.cloneAsThawed();
                      }
                      tzFormat.setGMTOffsetDigits(digits);
                  }
              }
          }
      }
docs: Private method lazily instantiate the TimeZoneFormat field
  @param bForceUpdate when true, check if tzFormat is synchronized with
  the current numberFormat and update its digits if necessary. When false,
  this check is skipped.