         self.count += 1
     }
 
+    @discardableResult
     internal func popLast() -> Element? {
         guard count > 0 else { return nil }
         let lastIndex = bufferIndex(forDequeIndex: count - 1)

        self.count += 1
    }

    internal func popFirst() -> Element? {
        guard count > 0 else { return nil }
        let first = elements.advanced(by: start).move()

    /// 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()
    }
