def invert
      pairs = []
      each { |k,v| pairs << [v, k] }
      return self.class.new(pairs, &@default)
    end
def invert
      pairs = []
      each { |k,v| pairs << [v, k] }
      return self.class.new(pairs, &@default)
    end
Return a new `Map` created by using keys as values and values as keys.
 If there are multiple values which are equivalent (as determined by `#hash` and
 `#eql?`), only one out of each group of equivalent values will be
 retained. Which one specifically is undefined.

 @example
   Erlang::Map["A" => 1, "B" => 2, "C" => 3, "D" => 2].invert
   # => Erlang::Map[1 => "A", 3 => "C", 2 => "B"]

 @return [Map]