 
   @type value :: term
 
-  @opaque t(value) :: %__MODULE__{data: %{optional(value) => []}}
+  @opaque t(value) :: %__MODULE__{map: %{optional(value) => []}}
   @type t :: t(term)
 
-  defstruct data: %{}
+  defstruct map: %{}, version: 2
 
   @doc """
   Returns a new set.


  """
  @spec size(t) :: non_neg_integer
  def size(%MapSet{data: map}) do
    map_size(map)
  end



  """
  @spec subset?(t, t) :: boolean
  def subset?(%MapSet{map: map1}, %MapSet{map: map2}) do
    if map_size(map1) <= map_size(map2) do
      map1
      |> Map.keys
