code: public static MeasureFormat getInstance(ULocale locale, FormatWidth formatWidth, NumberFormat format) {
          PluralRules rules = PluralRules.forLocale(locale);
          NumericFormatters formatters = null;
          MeasureFormatData data = localeMeasureFormatData.get(locale);
          if (data == null) {
              data = loadLocaleData(locale);
              localeMeasureFormatData.put(locale, data);
          }
          if (formatWidth == FormatWidth.NUMERIC) {
              formatters = localeToNumericDurationFormatters.get(locale);
              if (formatters == null) {
                  formatters = loadNumericFormatters(locale);
                  localeToNumericDurationFormatters.put(locale, formatters);
              }
          }
          NumberFormat intFormat = NumberFormat.getInstance(locale);
          intFormat.setMaximumFractionDigits(0);
          intFormat.setMinimumFractionDigits(0);
          intFormat.setRoundingMode(BigDecimal.ROUND_DOWN);
          return new MeasureFormat(
                  locale,
                  data,
                  formatWidth,
                  new ImmutableNumberFormat(format),
                  rules,
                  formatters,
                  new ImmutableNumberFormat(NumberFormat.getInstance(locale, formatWidth.getCurrencyStyle())),
                  new ImmutableNumberFormat(intFormat));
      }
docs: Create a format from the locale, formatWidth, and format.
  
  @param locale the locale.
  @param formatWidth hints how long formatted strings should be.
  @param format This is defensively copied.
  @return The new MeasureFormat object.