     }
 }
 
+@warn_unused_result
 public func << (b: BigUInt, amount: Int) -> BigUInt {
     precondition(amount >= 0)
     guard amount > 0 else { return b }

    return result
}

public func ^ (a: BigUInt, b: BigUInt) -> BigUInt {
    var result = BigUInt()
    for i in (0 ..< max(a.count, b.count)).reverse() {


    /// Returns the greatest common divisor of `a` and `b`.
    /// - Complexity: O(count^2) where count = max(a.count, b.count)
    @warn_unused_result
    public static func gcd(a: BigUInt, _ b: BigUInt) -> BigUInt {
        // This is Stein's algorithm: https://en.wikipedia.org/wiki/Binary_GCD_algorithm
        if a.isZero || b.isZero { return BigUInt() }
