anchor.diff:  %% @end
   -spec add_values(Json::json(), [{Field::field(),Value::json_input_value()}]) -> json_output_value().
   add_values(Json, FieldsAndValues) ->
  -    Fun = fun({Attr, Value}, Acc) -> add_value(Acc, Attr, Value) end,
  -    lists:foldl(Fun, Json, FieldsAndValues).
  -
  +    Fun = fun({Attr, Value}, Acc) -> add_value_internal(Acc, parse_attr(Attr), parse_value(Value)) end,
  +    format_output(lists:foldl(Fun, parse_json(Json), FieldsAndValues)).
  +
  +
  +convert_undefined(undefined) ->
  +    <<>>;
  +convert_undefined(Value) ->
  +    Value.
  +
  +    
   %% @doc 
   %% Decodes a json object into mochijson format.
   %%
  
positive.code: %% @hidden
  %% Function: parse_value/1
  %% @end
  parse_value([]) ->
      [];
  parse_value({s, Value}) ->
      binary:list_to_bin(Value);
  parse_value(Value) when is_tuple(Value)->
      erlson:from_json_term(Value);
  parse_value(Value) when is_list(Value) ->
  
negative.code: 
  -spec rm_fields(Json::json(), [Field::field()]) -> json_output_value().
  rm_fields(Json, Fields) ->
      Fun = fun(Attr, Acc) -> rm_field(Acc, parse_attr(Attr)) end,
      format_output(lists:foldl(Fun, parse_json(Json), Fields)).
  
  %% @doc
  %% Sets a json attribute 'Attr' to 'Value'. This function is only for creating 
  