     }
 }
 
+@warn_unused_result
 public prefix func ~(a: BigUInt) -> BigUInt {
     return BigUInt(a.map { ~$0 })
 }
 
+@warn_unused_result
 public func | (a: BigUInt, b: BigUInt) -> BigUInt {
     var result = BigUInt()
     for i in (0 ..< max(a.count, b.count)).reverse() {

    }
}

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

    return result
}

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