     
     /// EZSE: Creates a Dictionary with keys and values generated by running
     /// each [key: value] of self through the mapFunction.
-    func map<K, V>(map: (Key, Value) -> (K, V)) -> [K: V] {
+    public func map<K, V>(map: (Key, Value) -> (K, V)) -> [K: V] {
         var mapped: [K: V] = [:]
         forEach {
             let (_key, _value) = map($0, $1)

    
    /// EZSE: Creates a Dictionary with keys and values generated by running
    /// each [key: value] of self through the mapFunction discarding nil return values.
    func mapFilter<K, V>(map: (Key, Value) -> (K, V)?) -> [K: V] {
        var mapped: [K: V] = [:]
        forEach {
            if let value = map($0, $1) {

    
    /// EZSE: Intersection of self and the input dictionaries.
    /// Two dictionaries are considered equal if they contain the same [key: value] copules.
    public func intersection<K, V where K: Equatable, V: Equatable>(dictionaries: [K: V]...) -> [K: V] {
        //  Casts self from [Key: Value] to [K: V]
        let filtered = mapFilter { (item, value) -> (K, V)? in
            if item is K && value is V {
