code: public void setFormatsByArgumentName(Map<String, Format> newFormats) {
          for (int partIndex = 0; (partIndex = nextTopLevelArgStart(partIndex)) >= 0;) {
              String key = getArgName(partIndex + 1);
              if (newFormats.containsKey(key)) {
                  setCustomArgStartFormat(partIndex, newFormats.get(key));
              }
          }
      }
docs: <strong>[icu]</strong> Sets the Format objects to use for the values passed into
  <code>format</code> methods or returned from <code>parse</code>
  methods. The keys in <code>newFormats</code> are the argument
  names in the previously set pattern string, and the values
  are the formats.
  <p>
  Only argument names from the pattern string are considered.
  Extra keys in <code>newFormats</code> that do not correspond
  to an argument name are ignored.  Similarly, if there is no
  format in newFormats for an argument name, the formatter
  for that argument remains unchanged.
  <p>
  This may be called on formats that do not use named arguments.
  In this case the map will be queried for key Strings that
  represent argument indices, e.g. "0", "1", "2" etc.
  
  @param newFormats a map from String to Format providing new
  formats for named arguments.