anchor.diff:  
   %%--------------------------------------------------------------------
   %% @doc
  -%% Insert sub-json to json tree
  +%% Insert sub-json to json tree under specified by filter path, e.g:
  +%%
  +%% insert(#{<<"a">> => #{<<"b">> => 1}}, <<"val">>, [<<"a">>, <<"c">>]) ->
  +%%      #{<<"a">> => #{<<"b">> => 1, <<"c">> => <<"val">>}}
  +%% insert(#{<<"a">> => [1, 2, <<"a">>}, 5, [<<"a">>, <<"[3]">>]) ->
  +%%      #{<<"a">> => [1, 2, <<"a">>, 5}
  +%%
   %% @end
   %%--------------------------------------------------------------------
   -spec insert(undefined | json_term(), JsonToInsert :: json_term(), filter()) ->
  
positive.code:                             ++ [null || _ <- lists:seq(Length + 1, Index - 1)]
                              ++ [insert(undefined, JsonToInsert, Rest)];
                          false ->
                              setnth(
                                  Index, Json,
                                  insert(lists:nth(Index, Json), JsonToInsert, Rest)
                              )
                      end
              end;
  
negative.code: % binaries in maps intended for JSON serialization.
  -type json_map() :: #{binary() => json_term()}.
  
  % List of binaries pointing to sub-json of a json, e.g
  % [<<"attr1">>, <<"[2]">>] points to element <<"a">> in
  % #{<<"attr1">> => [1, null, <<"a">>], <<"attr2">> => <<"val2">>}
  -type filter() :: [binary()].
  
  -export_type([json_term/0, json_map/0, filter/0]).
  