sclass LearnNumberRange { double min = positiveInfinity(), max = negativeInfinity(); void add(Number n) { if (n != null) { double d = toDouble(n); min = min(d, n); max = max(d, n); } } bool empty() { ret min == positiveInfinity(); } DoubleRange getRange() { ret empty() ? null : DoubleRange(min, max); } }