   """
   @spec member?(t, value) :: boolean
   def member?(%MapSet{map: map}, value) do
-    match?(%{^value => _}, map)
+    :erlang.is_map_key(value, map)
   end
 
   @doc """

  # Elixir v1.5 change the map representation, so on
  # version mismatch we need to compare the keys directly.
  def equal?(%MapSet{map: map1}, %MapSet{map: map2}) do
    map_size(map1) == map_size(map2) and map_subset?(Map.keys(map1), map2)
  end

  @doc """

    %{map_set | map: Map.drop(map1, Map.keys(map2))}
  end

  defp filter_not_in(:none, _map2, acc), do: Map.new(acc)

  defp filter_not_in({key, _val, iter}, map2, acc) do
    if :erlang.is_map_key(key, map2) do
      filter_not_in(:maps.next(iter), map2, acc)
    else
      filter_not_in(:maps.next(iter), map2, [{key, @dummy_value} | acc])
    end
  end

