     end
   end
 
-  @spec do_diff(binary | integer | float, binary | integer | float) :: map | nil
+  @spec do_diff(binary | integer | float, binary | integer | float, list) :: map | nil
   defp do_diff(i1, i2, opts) when not (is_list(i1) and is_list(i2))
                     and not (is_map(i1) and is_map(i2)) do
     compare = if Keyword.get(opts, :strict_equality, @default_strict_equality) do

    end
  end

  @spec do_diff(map, map) :: map | nil
  defp do_diff(map1, map2, opts) when is_map(map1) and is_map(map2) do
    keys_non_uniq = Enum.concat(Map.keys(map1), Map.keys(map2))
    diff = keys_non_uniq

      {_, []} -> new_list
      {check, deleted} ->
        deleted_map = Enum.into(deleted, %{})
        all_checked(check, deleted_map, opts)
    end
    if diff != %{} do
      diff
