anchor.diff:  %% @end
   replace_field_internal(Json, Query, Value) ->
       Attrs = parse_attr(Query),
  -    try erlson:store(Attrs, Value, Json) of
  -	Result ->
  -	    to_string(erlson:to_json(Result))
  +    %% Check if the value exist, if it doesn't exist it shouldn't be replaced
  +    case erlson:get_value(Attrs, Json) of
  +	undefined ->
  +	    to_string(erlson:to_json(Json));
  +	_ ->	   
  +	    try erlson:store(Attrs, Value, Json) of
  +		NewJson ->
  +		    to_string(erlson:to_json(NewJson))
  +	    catch
  +		_:_ ->
  +		    to_string(erlson:to_json(Json))
  +	    end
  +    end.
  +
  +%% @doc
  +%% @hidden
  +%% Function: rm_field_internal/2
  +%% @end
  +rm_field_internal(Json, Query) ->
  +    Attrs = parse_attr(Query),
  +    try erlson:remove(Attrs, Json) of
  +	NewJson ->
  +	    to_string(erlson:to_json(NewJson))
       catch
   	_:_ ->
  -	    Json
  -    end.
  -
  -%% @doc
  -%% @hidden
  -%% Function: rm_field_internal/2
  -%% @end
  -rm_field_internal(Json, Query) ->
  -    Attrs = parse_attr(Query),
  -    NewJson = erlson:remove(Attrs, Json),
  -    to_string(erlson:to_json(NewJson)).
  +	    to_string(erlson:to_json(Json))
  +    end.
  
positive.code: %% Function: parse_attr/1
  %% @end
  parse_attr(Query) ->
      Attrs = re:split(Query, "\\.", [{return, list}]),
      lists:map(fun list_to_atom/1, Attrs).
  
  %% @doc
  %% @hidden
  
negative.code: %% @end
  add_field_internal(Json, Field, Value) ->
      Attrs = parse_attr(Field),
      
      try erlson:store(Attrs, Value, Json) of
  	NewJson ->
  	    to_string(erlson:to_json(NewJson))
      catch
  	_:_ ->
  	    to_string(erlson:to_json(Json))
      end.
  
  %% @doc
  %% @hidden
  