Note: So far, with every major version of Swift, Apple decided to change the foundational APIs of the numeric types in Swift significantly and consistently in a backward incompatible way. In order to be more isolated from such changes in future, with Swift 3, I decided to introduce a distinct integer type used in NumberKit based on a new protocol IntegerNumber. All standard numeric integer types implement this protocol. This is now consistent with the usage of protocol FloatingPointNumber for floating point numbers, where there was, so far, never a real, generic enough foundation (and still isn't). BigInt objects are immutable, signed, arbitrary-precision integers that can be used as a drop-in replacement for the existing binary integer types of Swift 5. Struct BigInt defines all the standard arithmetic integer operations and implements the corresponding protocols defined in the standard library.