code: public MonetaryAmountFormat build() {
          if (Objects.isNull(locale)) {
              locale = Locale.getDefault();
          }
          if (Objects.isNull(decimalFormat)) {
              decimalFormat = (DecimalFormat) NumberFormat.getCurrencyInstance(locale);
          }
          if (Objects.isNull(currencyUnit)) {
              currencyUnit = Monetary.getCurrency(locale);
          }
          if (Objects.isNull(producer)) {
              producer = new MoneyProducer();
          }
          decimalFormat.setCurrency(Currency.getInstance(currencyUnit.getCurrencyCode()));
          return new MonetaryAmountDecimalFormat(decimalFormat, producer, currencyUnit);
      }
docs: Creates the {@link MonetaryAmountFormat}
  If @{link Locale} didn't set the default value is {@link Locale#getDefault()}
  If @{link MonetaryAmountProducer} didn't set the default value is {@link MoneyProducer}
  If @{link CurrencyUnit} didn't set the default value is a currency from {@link Locale}
  @return {@link MonetaryAmountFormat}