code: @Override
  	public Long queryFrom(MonetaryAmount amount) {
  		Objects.requireNonNull(amount, "Amount required.");
  		BigDecimal number = amount.getNumber().numberValue(BigDecimal.class);
  		CurrencyUnit cur = amount.getCurrency();
  		int scale = cur.getDefaultFractionDigits();
  		if(scale<0){
  			scale = 0;
  		}
  		number = number.setScale(scale, RoundingMode.DOWN);
  		return number.movePointRight(number.scale()).longValueExact();
  	}
docs: Gets the amount in minor units as a {@code long}.
  <p>
  This returns the monetary amount in terms of the minor units of the
  currency, truncating the amount if necessary. For example, 'EUR 2.35'
  will return 235, and 'BHD -1.345' will return -1345.
  <p>
  This method matches the API of {@link java.math.BigDecimal}.
  
  @return the minor units part of the amount
  @throws ArithmeticException
  if the amount is too large for a {@code long}