anchor.diff:                                               value=annotation_value(Name, Attributes)} | Annotations]).
   
   annotation_value(Name, Attributes) ->
  -    AttrString = lists:join(", ", [[Key, ": ", to_string(Value)] ||
  -                                      {Key, Value} <- Attributes]),
  +    Annos = maps:fold(fun(Key, Value, Acc) ->
  +                              [Key, ": ", to_string(Value) | Acc]
  +                      end, [], otel_attributes:map(Attributes)),
  +    AttrString = lists:join(", ", Annos),
       iolist_to_binary([Name, ": {", AttrString, "}"]).
   
   to_string(Value) when is_function(Value) ->
  
positive.code:     Value.
  
  to_tags(Attributes) ->
      lists:map(fun({Name, Value}) ->
                       {to_binary_string(Name), to_binary_string(Value)}
                end, Attributes).
  
  to_parent_id(undefined) ->
      undefined;
  
negative.code:        %% shared=false, %% TODO: get from attributes?
         kind=to_kind(Span#span.kind),
         parent_id=to_parent_id(Span#span.parent_span_id),
         annotations=to_annotations(otel_events:list(Span#span.events)),
         tags=to_tags(Span#span.attributes),
         local_endpoint=LocalEndpoint
         %% remote_endpoint %% TODO: get from attributes?
  