code: private static PatternData getPatternData(ULocale locale, String calType) {
          ICUResourceBundle rb =
                  (ICUResourceBundle) UResourceBundle.getBundleInstance(ICUData.ICU_BASE_NAME, locale);
          ICUResourceBundle dtPatternsRb = rb.findWithFallback("calendar/" + calType + "/DateTimePatterns");
          if (dtPatternsRb == null) {
              dtPatternsRb = rb.getWithFallback("calendar/gregorian/DateTimePatterns");
          }
  
          int patternsSize = dtPatternsRb.getSize();
          String[] dateTimePatterns = new String[patternsSize];
          String[] dateTimePatternsOverrides = new String[patternsSize];
          for (int i = 0; i < patternsSize; i++) {
              ICUResourceBundle concatenationPatternRb = (ICUResourceBundle) dtPatternsRb.get(i);
              switch (concatenationPatternRb.getType()) {
                  case UResourceBundle.STRING:
                      dateTimePatterns[i] = concatenationPatternRb.getString();
                      break;
                  case UResourceBundle.ARRAY:
                      dateTimePatterns[i] = concatenationPatternRb.getString(0);
                      dateTimePatternsOverrides[i] = concatenationPatternRb.getString(1);
                      break;
              }
          }
          return new PatternData(dateTimePatterns, dateTimePatternsOverrides);
      }
docs: Retrieves the DateTime patterns and overrides from the resource bundle and generates a
  new PatternData object.
  @param locale Locale to retrieve.
  @param calType Calendar type to retrieve. If not found will fallback to gregorian.
  @return PatternData object for this locale and calendarType.