anchor.diff:  % 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([], Map) when is_map(Map) ->
  -    Map;
  -deep_remove(Path, Map) when is_list(Path), is_map(Map) ->
  -    remove(Map, Path);
  -deep_remove(Path, Map) when is_map(Map) ->
  -    error({badpath, Path});
  -deep_remove(Path, Map) when is_list(Path) ->
  -    error({badmap, 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
  
positive.code:     Target;
  deep_merge(Fun, Target, [From|Maps]) ->
      deep_merge(Fun, deep_merge(Fun, Target, From), Maps);
  deep_merge(Fun, Target, Map) when is_map(Target), is_map(Map) ->
      maps:fold(
          fun(K, V, T) ->
              case maps:find(K, T) of
  
negative.code: % <li>`{badkey,Path}' if no value is associated with path `Path'</li>
  % </ul>
  -spec deep_update(path(), term(), map()) -> map().
  deep_update(Path, Value, Map1) ->
      check(Path, Map1),
      update(Map1, Path,
          fun() -> Value end,
          fun
  