anchor.diff:              #{a => 1, x => #{y => #{a => 3}}},
               deep_get([a, a], deep_put([a, a, x, y], #{a => 3}, ?STRUCT))
           ),
  -        ?_assertError({badvalue, [d]}, deep_put([d, x], y, ?STRUCT)),
  -        ?_assertError({badvalue, [a, b]}, deep_put([a, b, c], 1, ?STRUCT))
  +        ?_badvalue(fun(P, M) -> deep_put(P, y, M) end)
       ]}.
   
   deep_update_test_() ->
  
positive.code:         )
      ]}.
  
  exhaust(I) ->
      exhaust(deep_next(I), []).
  
  
negative.code:         ?_assertExit(
              badarg,
              deep_update_with([a], fun() -> foo end, ?STRUCT)
          ),
          ?_badarg(fun(P, M) -> deep_update_with(P, Incr, M) end),
          ?_badvalue(fun(P, M) -> deep_update_with(P, Incr, M) end),
          ?_badkey(fun(P, M) -> deep_update_with(P, Incr, M) end)
      ]}.
  
  deep_update_with_init_test_() ->
  