     }
     
     /// EZSE: Checks if self contains a list of items.
-    func contains(items: Element...) -> Bool {
+    public func contains(items: Element...) -> Bool {
         return items.testAll { self.indexOf($0) >= 0 }
     }
     
     /// EZSE: Difference of self and the input arrays.
-    func difference(values: [Element]...) -> [Element] {
+    public func difference(values: [Element]...) -> [Element] {
         var result = [Element]()
         elements: for element in self {
             for value in values {

    
    /// EZSE: Creates an array with values generated by running each value of self
    /// through the mapFunction and discarding nil return values.
    func mapFilter<V>(mapFunction map: (Element) -> (V)?) -> [V] {
        var mapped = [V]()
        each { (value: Element) -> Void in
            if let mappedValue = map(value) {

    }
    
    /// EZSE: Gets the object at the specified index, if it exists.
    public func get(index: Int) -> Element? {
        return index >= 0 && index < count ? self[index] : nil
    }
    
    /// EZSE: Reverse the given index. i.g.: reverseIndex(2) would be 2 to the last
    public func reverseIndex(index: Int) -> Int {
        return Swift.max(self.count - 1 - index, 0)
    }
    
    /// EZSE: Returns an array with the given number as the max number of elements.
    public func takeMax(n: Int) -> Array {
        return Array(self[0..<Swift.max(0, Swift.min(n, count))])
    }
    
    /// EZSE: Iterates on each element of the array.
    public func each(call: (Element) -> ()) {
        for item in self {
            call(item)
        }
    }
    
    /// EZSE: Iterates on each element of the array with its index.
    public func each(call: (Int, Element) -> ()) {
        for (index, item) in self.enumerate() {
            call(index, item)
        }
