* @param upperLimit
     * @return a pseudo randomly constructed BigDecimal in the range from
     * lowerLimit to upperLimit inclusive and that has up to decimalPlaces
     * number of decimal places
     */
    public static BigDecimal getRandom(
            Generic_BigInteger a_Generic_BigInteger,
            int decimalPlaces,
            BigDecimal lowerLimit,
            BigDecimal upperLimit) {
        //BigDecimal resolution = new BigDecimal(BigInteger.ONE,decimalPlaces);
        BigDecimal range = upperLimit.subtract(lowerLimit);
        BigInteger rescaledRange = range.scaleByPowerOfTen(decimalPlaces).toBigInteger();
        BigInteger random_BigInteger = a_Generic_BigInteger.getRandom(
                rescaledRange);
        BigDecimal random_BigDecimal = new BigDecimal(random_BigInteger, decimalPlaces);
        BigDecimal result = random_BigDecimal.add(lowerLimit);
        return result;
    }