               v_diff2 = Map.delete(v_diff, "_t")
               v_map
               |> Enum.with_index
-              |> Enum.map(fn({v, k}) -> {to_string(k),v} end)
+              |> Enum.map(fn({v, k}) -> {<<k+48>>,v} end)
               |> Enum.into(%{})
               |> do_patch_list(%{}, v_diff2, 0)
             false -> do_patch(v_map, v_diff)

  end

  defp do_patch_list(list1, new_list1, diff1, i) do
    si = to_string(i)
    {list2, new_list2, has_changed1, has_deleted1} =
      case Map.get(diff1, "_" <> si, false) do
        [_, 0, 0] -> {Map.delete(list1, si), new_list1, true, true}
        ["", new_i, 3] ->
          {
            list1,
            Map.put(new_list1, to_string(new_i),
            Map.get(list1, si)), true, false
          }
        false -> {list1, new_list1, false, false}
      end

      %{"test" => [%{"1": 2}]}

  """

  defp split_underscore({<<"_", _>>, [value, 0, 0]}) when is_map(value) do
    false
