anchor.diff:  add_value_internal(Json, Attrs, Value) ->
       try erlson:get_value(Attrs, Json) of
   	undefined ->
  -	    %% erlang:display("undefined Json"),
   	    ?erlson_default(erlson:store(Attrs, Value, Json), Json);
   	List when is_list(List) ->
  -	    %% erlang:display("List Json"),
   	    NewList = lists:sort([Value | List]),
   	    erlson:store(Attrs, NewList, Json);
   	_ -> 
  -	    %% erlang:display("non-list Json"),
   	    Json
       catch
   	_:_ ->
  
positive.code: %% ```
  %% > Json = "{\"attr1\":\"value1\"}".
  %% > Field = "attr2".
  %% > Value = "value2".
  %% > lib_json:add_value(Json, Field, Value).
  %% "{\"attr1\":\"value1\", \"attr2\":\"value2\"}"
  %% '''
  
negative.code: -spec set_attr(Attr::attr(), Value::json_input_value()) -> json_output_value().
  set_attr(Attr, Value) ->
      add_value("{}", Attr, Value).
  
  %% @doc
  %% Sets a lsit of json attributes. This function is only for creating 
  %% a proper JSON object with a list of attributes of {'Attr', Value}. 
  
  %% This function uses <a href="#add_values-2">add_values/2</a> and gives it an 
  %% empty json object. See <a href="#add_values-2">add_values/2</a> for examples 
  %% on how to use this function.
  %%
  %% @end
  -spec set_attrs([{Attr::attr(), Value::json_input_value()}]) -> json_output_value().
  set_attrs(AttrsAndValuesList) ->
      add_values("{}", AttrsAndValuesList).
  
  
  
  