private static Optional<BigDecimal> budgetFromSlime(Inspector inspector) {
        if (inspector.type() == Type.STRING) return Optional.of(inspector.asString()).map(BigDecimal::new);
        if (inspector.type() == Type.LONG) return Optional.of(inspector.asLong()).map(BigDecimal::new);
        if (inspector.type() == Type.DOUBLE) return Optional.of(inspector.asDouble()).map(BigDecimal::new);
        return Optional.empty();
    }
Since Slime does not support any decimal numeric value that isn't a floating point of some sort, we need
to be liberal in what we accept.  Since we are dealing with currency, ideally we would have a decimal
data type all the way through.

There are three ways of communicating the budget to the Quota class:
  1. A LONG means we are looking at the budget in whole dollars.  This is the legacy way.
  2. A STRING formatted as a number is a full precision decimal number.  This is the proper way.
  3. A DOUBLE gets translated into a decimal type, but loses precision.  This is the CYA way.
config-model-api/src/main/java/com/yahoo/config/model/api/Quota.java