anchor.diff:             ((X) >= 10) andalso ((X) =< 15) -> (X) + $A - 10
           end).
   
  +-define(HEX2DEC(X),
  +        if ((X) >= $0) andalso ((X) =< $9) -> (X) - $0;
  +           ((X) >= $A) andalso ((X) =< $F) -> (X) - $A + 10;
  +           ((X) >= $a) andalso ((X) =< $f) -> (X) - $a + 10
  +        end).
  +
   -define(BAGGAGE_KEY, '$__otel_baggage_ctx_key').
   -define(BAGGAGE_HEADER, <<"baggage">>).
   
  --spec set(#{key() => value()} | [{key(), value()}]) -> otel_ctx:t().
  +-spec set(#{key() => value()} | [{key(), value()}]) -> ok.
   set(KeyValues) when is_list(KeyValues) ->
       set(maps:from_list(KeyValues));
   set(KeyValues) when is_map(KeyValues) ->
  
positive.code:     form_urlencode(Value, [{encoding, utf8}]).
  
  decode_key(Key) ->
      uri_string:percent_decode(string:trim(unicode:characters_to_binary(Key))).
  
  decode_value(Value) ->
      uri_string:percent_decode(string:trim(unicode:characters_to_binary(Value))).
  
  %% HTML 5.2 - 4.10.21.6 URL-encoded form data - WHATWG URL (10 Jan 2018) - UTF-8
  %% HTML 5.0 - 4.10.22.6 URL-encoded form data - encoding (non UTF-8)
  form_urlencode(Cs, [{encoding, latin1}]) when is_list(Cs) ->
      B = convert_to_binary(Cs, utf8, utf8),
      html5_byte_encode(base10_encode(B));
  form_urlencode(Cs, [{encoding, latin1}]) when is_binary(Cs) ->
      html5_byte_encode(base10_encode(Cs));
  form_urlencode(Cs, [{encoding, Encoding}])
    when is_list(Cs), Encoding =:= utf8; Encoding =:= unicode ->
      B = convert_to_binary(Cs, utf8, Encoding),
  
negative.code:     throw({error,invalid_encoding, Encoding});
  form_urlencode(Cs, _) ->
      throw({error,invalid_input, Cs}).
  
  html5_byte_encode(B) ->
      html5_byte_encode(B, <<>>).
  