this.min)
     *   - expandMax: allow increasing the max bound (if range.max > this.max)
     *   - shrinkMax: allow decreasing the max bound (if range.max < this.max)
     *
     * This method will ensure that the resulting bounds are defined and valid
     * (i.e. min <= max) provided that they were valid or empty before and the
     * value range is non-empty and valid.
     *
     * Note that unless expanding/shrinking a bound is explicitly enabled in
     * the configuration, non-empty bounds will not 