 
     diff = case Enum.split_with(new_list, &split_underscore_map/1) do
       {[], []} -> new_list
-      {_, []} -> new_list
-      {check, deleted} ->
+      {[], _} -> new_list
+      {deleted, check} ->
         deleted_map = Enum.into(deleted, %{})
         all_checked(check, deleted_map, opts)
         |> Enum.filter(fn

  end

  defp do_patch_delete(list, diff) do
    case Enum.split_while(diff, &split_underscore/1) do
      {[], []} -> {list, diff}
      {_, []} -> {list, diff}
      {check, deleted} ->
        delete_list = Enum.map(deleted, fn
          {"_" <> s_index, _} -> String.to_integer(s_index)
        end)

        filtered_list = Enum.filter(list, fn

  @sentinel :json_diff_ex_sentinal_value

  @spec split_underscore_map({binary, list}) :: boolean
  defp split_underscore_map({<<"_", _::binary>>, [map, 0, 0]}) when is_map(map) do
    true
  end
  defp split_underscore_map(_) do
    false
  end

  @spec split_underscore({binary, list}) :: boolean
  defp split_underscore({<<"_", _::binary>>, [_, 0, 0]}) do
    true
  end

  defp split_underscore(_) do
    false
  end


