     ///
     /// - Requires: `count > 0`
     /// - Complexity: O(1) if storage isn't shared with another live deque; otherwise O(`count`).
+    @discardableResult
     public mutating func removeLast() -> Element {
         precondition(count > 0)
         return buffer.popLast()!

    /// Remove the element at a given index from this deque.
    ///
    /// - Complexity: O(`count`). Note though that complexity is O(1) if `index` is of a constant distance from the front or end of the deque.
    public mutating func remove(at index: Int) -> Element {
        checkSubscript(index)
        makeUnique()

    /// Remove and return the first element if the deque isn't empty; otherwise return nil.
    ///
    /// - Complexity: O(1) if storage isn't shared with another live deque; otherwise O(`count`).
    @discardableResult
    public mutating func popFirst() -> Element? {
        return buffer.popFirst()
    }
