code: @SuppressWarnings("cast")
      public MoneyFormatter toFormatter(Locale locale) {
          MoneyFormatter.checkNotNull(locale, "Locale must not be null");
          MoneyPrinter[] printersCopy = (MoneyPrinter[]) printers.toArray(new MoneyPrinter[printers.size()]);
          MoneyParser[] parsersCopy = (MoneyParser[]) parsers.toArray(new MoneyParser[parsers.size()]);
          return new MoneyFormatter(locale, printersCopy, parsersCopy);
      }
docs: Builds the formatter from the builder setting the locale.
  <p>
  Once the builder is in the correct state it must be converted to a
  {@code MoneyFormatter} to be used. Calling this method does not
  change the state of this instance, so it can still be used.
  <p>
  This method uses the specified locale within the returned formatter.
  It can be changed by calling {@link MoneyFormatter#withLocale(Locale)}.
  
  @param locale  the initial locale for the formatter, not null
  @return the formatter built from this builder, never null