 //MARK: Addition
 
 extension BigUInt {
+    /// Add the digit `d` to this integer in place.
+    /// `d` is shifted `shift` digits to the left before being added.
+    /// - Complexity: O(max(count, shift))
     public mutating func addDigitInPlace(d: Digit, shift: Int = 0) {
         precondition(shift >= 0)
         lift()

    }

    /// Divide this integer by the digit `y` and return the resulting quotient and remainder.
    @warn_unused_result
    /// - Requires: y > 0
    /// - Returns: (div, mod) where div = floor(x/y), mod = x - div * y
    /// - Complexity: O(x.count)
    public func divideByDigit(y: Digit) -> (div: BigUInt, mod: Digit) {
        var div = self
        let mod = div.divideInPlaceByDigit(y)

}

extension BigUInt {
    /// Multiplication switches to an asymptotically better recursive algorithm when arguments have more digits than this limit.
    static var directMultiplicationLimit: Int = 1024
}

/// Multiply `a` by `b` and store the result in `a`.
/// - Note: This uses the naive O(n^2) multiplication algorithm unless both arguments have more than
///   `BugUInt.directMultiplicationLimit` digits.
/// - Complexity: O(n^log2(3))
@warn_unused_result
public func *(x: BigUInt, y: BigUInt) -> BigUInt {
    let xc = x.count
