             upperOverflow || resultOverflow
         )
     }
+
     public static func divideWithOverflow(_ lhs: UInt128, _ rhs: UInt128) -> (UInt128, overflow: Bool) {
         return (
             (lhs /% rhs).quotient, false
         )
     }
+
     public static func remainderWithOverflow(_ lhs: UInt128, _ rhs: UInt128) -> (UInt128, overflow: Bool) {
         return (
             (lhs /% rhs).remainder, false
         )
     }
+
     public static func multiplyWithOverflow(_ lhs: UInt128, _ rhs: UInt128) -> (UInt128, overflow: Bool) {
         // Useful bitmasks to be used later.
         let lower32 = UInt64(UInt32.max)

            upperOverflow || resultOverflow
        )
    }
    public static func subtractWithOverflow(_ lhs: UInt128, _ rhs: UInt128) -> (UInt128, overflow: Bool) {
        var resultOverflow = false
        // Subtract lower bits and check for overflow.

            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 {
