code: @GwtIncompatible("TODO")
    public static BigInteger divide(BigInteger p, BigInteger q, RoundingMode mode) {
      BigDecimal pDec = new BigDecimal(p);
      BigDecimal qDec = new BigDecimal(q);
      return pDec.divide(qDec, 0, mode).toBigIntegerExact();
    }
docs: Returns the result of dividing {@code p} by {@code q}, rounding using the specified
  {@code RoundingMode}.
  
  @throws ArithmeticException if {@code q == 0}, or if {@code mode == UNNECESSARY} and {@code a}
  is not an integer multiple of {@code b}