         precondition(count > 0)
         return buffer.popFirst()!
     }
-    
+
     /// Remove the first `n` elements from this deque.
     ///
     /// - Requires: `count >= n`

        }
        return result
    }
    
    public func reduce<T>(initial: T, @noescape combine: (T, Element) throws -> T) rethrows -> T {
        var result = initial
        try self.forEach {

            }
        }
    }

    /// Destroy elements in the range (index ..< index + count) and collapse the gap by moving remaining elements.
    /// Note that all previously calculated buffer indexes are invalidated by this method.
    private func removeRange(range: Range<Int>) {
