 }
 /// 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 {
+    if rhs.value.upperBits > 0 || rhs.value.lowerBits > 128 {
         return UInt128(0)
     }
     switch 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 {
        return UInt128(0)
    }
    switch rhs {

// MARK: IntegerArithmeticType Conformance
extension UInt128: IntegerArithmeticType {
    public func toIntMax() -> IntMax {
        precondition(self.value.lowerBits <= UInt64(IntMax.max),
            "Converting `self` to 'IntMax' causes an integer overflow")
        return IntMax(value.lowerBits)
    }
    public static func addWithOverflow(lhs: UInt128, _ rhs: UInt128) -> (UInt128, overflow: Bool) {
