anchor.diff:  -spec init(cowboy_stream:streamid(), cowboy_req:req(), cowboy:opts())
   	-> {cowboy_stream:commands(), any()}.
   init(StreamID, Req, Opts) ->
  -	Result = init_tracer(StreamID, Req, Opts),
  -	{Commands, Next} = cowboy_stream:init(StreamID, Req, Opts),
  -	case Result of
  -		no_tracing -> {Commands, Next};
  -		{tracing, TracerPid} -> {[{spawn, TracerPid, 5000}|Commands], Next}
  -	end.
  +	init_tracer(StreamID, Req, Opts),
  +	cowboy_stream:init(StreamID, Req, Opts).
   
   -spec data(cowboy_stream:streamid(), cowboy_stream:fin(), cowboy_req:resp_body(), State)
   	-> {cowboy_stream:commands(), State} when State::any().
  
positive.code: 				send, 'receive', call, return_to, procs, ports,
  				monotonic_timestamp, set_on_spawn, {tracer, TracerPid}
  			]),
  			{tracing, TracerPid};
  		_ ->
  			no_tracing
  	end.
  
  %% Tracer process.
  
negative.code: init_tracer(StreamID, Req, Opts=#{tracer_match_specs := List, tracer_callback := _}) ->
  	case match(List, StreamID, Req, Opts) of
  		false ->
  			ok;
  		true ->
  			start_tracer(StreamID, Req, Opts)
  	end;
  %% When the options tracer_match_specs or tracer_callback
  %% are not provided we do not enable tracing.
  init_tracer(_, _, _) ->
  	ok.
  
  match([], _, _, _) ->
  	true;
  