    "Thrown when a mathematical operation caused a number to
     overflow from its bounds, or when a numeric narrowing
     conversion fails because the number cannot be represented
     within the bounds of the narrower type.

     Note that:

     - arithmetic operations on [[Integer]]s result in _silent_
       overflow (JVM) or loss of precision (JavaScript), and
       thus never result in an `OverflowException`, and,
     - likewise, arithmetic operations on [[Float]] produce the
       value [[infinity]] instead of overflowing."
    shared class OverflowException(String message="Numeric overflow")
            extends Exception(message) {}