anchor.diff:              (_P, Rest, error) ->
                   lists:foldr(fun(Key, Acc) -> #{Key => Acc} end, Value, Rest)
           end
  -    );
  -deep_put(Path, _Value, Map1) when is_map(Map1) ->
  -    error({badpath, Path});
  -deep_put(Path, _Value, Map1) when is_list(Path) ->
  -    error({badmap, Map1}).
  +    ).
   
   % @doc If `Path' exists in `Map1', the old associated value is replaced by value
   % `Value'. The function returns a new map `Map2' containing the new associated
  
positive.code:     maps:fold(fun(K, V, Acc) -> maps:put(V, K, Acc) end, #{}, Map).
  
  %--- Internal Functions -------------------------------------------------------
  
  search(Element, [], Wrap, _Default) ->
      Wrap(Element);
  
negative.code: % The call fails with a `{badmap,Map}' exception if `Map' is not a map, or with
  % a `{badpath,Path}' exception if `Path' is not a path.
  -spec deep_remove(path(), map()) -> map().
  deep_remove(Path, Map) ->
      check(Path, Map),
      remove(Map, Path).
  
  % @doc Merges a list of maps recursively into a single map. If a path exist in
  % several maps, the value in the first nested map is superseded by the value in
  