     default: return UInt128(0)
     }
 }
+public func >>=(inout lhs: UInt128, rhs: UInt128) {
+    lhs = lhs >> rhs
+}
 // MARK: IntegerArithmeticType Conformance
 extension UInt128: IntegerArithmeticType {
     public func toIntMax() -> IntMax {

    }
    return result
}
// MARK: - Extend SignedIntegerType for UInt128
extension SignedIntegerType {
    // TODO: Need to break this out into each Signed Type to check for overflows.

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