code: @Override
      public Long queryFrom(MonetaryAmount amount) {
          Objects.requireNonNull(amount, "Amount required.");
          return amount.with(downRounding).getNumber().longValueExact();
      }
docs: Gets the amount in major units as a {@code long}.
  
  This returns the monetary amount in terms of the major units of the
  currency, truncating the amount if necessary. For example, 'EUR 2.35'
  will return 2, and 'BHD -1.345' will return -1.
  
  This method matches the API of {@link java.math.BigDecimal}.
  
  @return the major units part of the amount
  @throws ArithmeticException if the amount is too large for a {@code long}