 }
 // MARK: - Strideable
 extension UInt128: Strideable {
+    public typealias Stride = Int
     /// Returns an instance of UInt128 that is the current instance's
     /// value increased by `n` when `n` is positive or decreased
     /// by `n` when `n` is negative.
-    public func advancedBy(n: UInt128.Distance) -> UInt128 {
+    public func advancedBy(n: Stride) -> UInt128 {
         if n < 0 {
             return self &- UInt128(n * -1)
         }

    /// The unsigned integer representation of string exceeds
    /// 128 bits.
    case StringInputOverflow
    /// A condition that shouldn't ever happen. Hax0r!
    case Inconceivable
}
// MARK: Data Type
/// A 128-bit unsigned integer value type.

        // Shift 64 means move lower bits to upper bits.
        return UInt128(upperBits: lhs.value.lowerBits, lowerBits: 0)
    case 65...127:
        let upperBits = lhs.value.lowerBits << UInt64(rhs - 64)
        return UInt128(upperBits: upperBits, lowerBits: 0)
    default: return UInt128(0)
    }
