docs: public Coin fiatToCoin(Fiat convertFiat) {
          checkArgument(convertFiat.currencyCode.equals(fiat.currencyCode), "Currency mismatch: %s vs %s",
                  convertFiat.currencyCode, fiat.currencyCode);
          // Use BigInteger because it's much easier to maintain full precision without overflowing.
          final BigInteger converted = BigInteger.valueOf(convertFiat.value).multiply(BigInteger.valueOf(coin.value))
                  .divide(BigInteger.valueOf(fiat.value));
          if (converted.compareTo(BigInteger.valueOf(Long.MAX_VALUE)) > 0
                  || converted.compareTo(BigInteger.valueOf(Long.MIN_VALUE)) < 0)
              throw new ArithmeticException("Overflow");
          try {
              return Coin.valueOf(converted.longValue());
          } catch (IllegalArgumentException x) {
              throw new ArithmeticException("Overflow: " + x.getMessage());
          }
      }