         }
         return self &+ UInt128(n)
     }
+
     /// 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.

            try self = UInt128.fromUnparsedString(value)
        } catch { return }
    }
    // MARK: UnicodeScalarLiteralConvertible
    public typealias UnicodeScalarLiteralType = String
    public init(unicodeScalarLiteral value: UnicodeScalarLiteralType)  {
        self.init(stringLiteral: value)
    }
    // MARK: ExtendedGraphemeClusterLiteralConvertible
    public typealias ExtendedGraphemeClusterLiteralType = String
    public init(extendedGraphemeClusterLiteral value: ExtendedGraphemeClusterLiteralType) {
        self.init(stringLiteral: value)
    }
}
// MARK: - BitwiseOperations
extension UInt128 : BitwiseOperations {
    public static var allZeros: UInt128 = 0
}
/// Performs a bitwise AND operation on 2 UInt128 data types.
public func &(lhs: UInt128, rhs: UInt128) -> UInt128 {
    let upperBits = lhs.value.upperBits & rhs.value.upperBits
    let lowerBits = lhs.value.lowerBits & rhs.value.lowerBits
    return UInt128(upperBits: upperBits, lowerBits: lowerBits)
}
public func &=(lhs: inout UInt128, rhs: UInt128) {
    lhs = lhs & rhs
}
/// Performs a bitwise OR operation on 2 UInt128 data types.
public func |(lhs: UInt128, rhs: UInt128) -> UInt128 {
    let upperBits = lhs.value.upperBits | rhs.value.upperBits
    let lowerBits = lhs.value.lowerBits | rhs.value.lowerBits
    return UInt128(upperBits: upperBits, lowerBits: lowerBits)
}
public func |=(lhs: inout UInt128, rhs: UInt128) {
    lhs = lhs | rhs
}
/// Performs a bitwise XOR operation on 2 UInt128 data types.
public func ^(lhs: UInt128, rhs: UInt128) -> UInt128 {
    let upperBits = lhs.value.upperBits ^ rhs.value.upperBits
    let lowerBits = lhs.value.lowerBits ^ rhs.value.lowerBits
    return UInt128(upperBits: upperBits, lowerBits: lowerBits)
}
public func ^=(lhs: inout UInt128, rhs: UInt128) {
    lhs = lhs ^ rhs
}
/// Performs bit inversion (complement) on the provided UInt128 data type
/// and returns the result.
prefix public func ~(rhs: UInt128) -> UInt128 {

    let lowerBits = ~rhs.value.lowerBits
    return UInt128(upperBits: upperBits, lowerBits: lowerBits)
}

/// Shifts `lhs`' bits left by `rhs` bits and returns the result.
public func <<(lhs: UInt128, rhs: UInt128) -> UInt128 {
    if rhs.value.upperBits > 0 || rhs.value.lowerBits > 128 {
