anchor.diff:                                  protocol=http_protobuf}}
               end;
           http_protobuf ->
  +            Endpoints = endpoints(maps:get(endpoints, Opts1, ?DEFAULT_HTTP_ENDPOINTS), SSLOptions),
               {ok, #state{endpoints=Endpoints,
                           headers=Headers,
                           compression=Compression,
                           protocol=http_protobuf}};
           http_json ->
  +            Endpoints = endpoints(maps:get(endpoints, Opts1, ?DEFAULT_HTTP_ENDPOINTS), SSLOptions),
               {ok, #state{endpoints=Endpoints,
                           headers=Headers,
                           compression=Compression,
  
positive.code: init(Opts) ->
      Opts1 = merge_with_environment(Opts),
      SSLOptions = maps:get(ssl_options, Opts1, undefined),
      Endpoints = endpoints(maps:get(endpoints, Opts1, ?DEFAULT_ENDPOINTS), SSLOptions),
      Headers = headers(maps:get(headers, Opts1, [])),
      Compression = maps:get(compression, Opts1, undefined),
      case maps:get(protocol, Opts1, http_protobuf) of
          grpc ->
              ChannelOpts = maps:get(channel_opts, Opts1, #{}),
              UpdatedChannelOpts = case Compression of
                                     undefined -> ChannelOpts;
  
negative.code:     AppOpts = otel_configuration:merge_list_with_environment(config_mapping(), AppEnv, Config),
  
      %% append the default path `/v1/traces` only to the path of otlp_endpoint
      Opts1 = update_opts(otlp_endpoint, endpoints, ?DEFAULT_HTTP_ENDPOINTS, AppOpts, Opts, fun endpoints_append_path/1),
      Opts2 = update_opts(otlp_traces_endpoint, endpoints, ?DEFAULT_HTTP_ENDPOINTS, AppOpts, Opts1, fun maybe_to_list/1),
  
      Opts3 = update_opts(otlp_headers, headers, [], AppOpts, Opts2),
      Opts4 = update_opts(otlp_traces_headers, headers, [], AppOpts, Opts3),
  