code: private void initialize() {
          if (locale == null) {
              locale = ULocale.getDefault(Category.FORMAT);
          }
          if (formatData == null) {
              formatData = new DateFormatSymbols(locale);
          }
          if (calendar == null) {
              calendar = Calendar.getInstance(locale);
          }
          if (numberFormat == null) {
              NumberingSystem ns = NumberingSystem.getInstance(locale);
              if (ns.isAlgorithmic()) {
                  numberFormat = NumberFormat.getInstance(locale);
              } else {
                  String digitString = ns.getDescription();
                  String nsName = ns.getName();
                  // Use a NumberFormat optimized for date formatting
                  numberFormat = new DateNumberFormat(locale, digitString, nsName);
              }
          }
          // Note: deferring calendar calculation until when we really need it.
          // Instead, we just record time of construction for backward compatibility.
          defaultCenturyBase = System.currentTimeMillis();
  
          setLocale(calendar.getLocale(ULocale.VALID_LOCALE ), calendar.getLocale(ULocale.ACTUAL_LOCALE));
          initLocalZeroPaddingNumberFormat();
  
          if (override != null) {
             initNumberFormatters(locale);
          }
  
          parsePattern();
      }
docs: /*
  Initialized fields