         return result
     }
     
+    
     subscript (i: K) -> V? {
         get {
             return dictionary[i]



struct BiMap<K: Hashable, V: Hashable>: Sequence, Equatable  {
    var dictionary: Dictionary<K,V> = [:]
    var inverse: Dictionary<V,K> = [:]

    mutating func put(key: K, value: V) -> V? {
        let oldValueForKey = removeValueForKey(key)
        let oldKeyForvalue = removeKeyForValue(value)

    func generate() -> DictionaryGenerator<K,V> {
        return dictionary.generate()
    }
    
    /*
    func flip() -> BiMap<V,K> {
        return BiMap(self.dictionary,self.inverse)
    }
    */

    
}
