private SpanContext CreateChildContext() { SpanContext preferredReference = PreferredReference(); if (IsRpcServer()) { if (IsSampled()) { _tracer.Metrics.TracesJoinedSampled.Inc(1); } else { _tracer.Metrics.TracesJoinedNotSampled.Inc(1); } // Zipkin server compatibility if (_tracer.ZipkinSharedRpcSpan) { return(preferredReference); } } return(new SpanContext( preferredReference.TraceId, SpanId.NewUniqueId(), preferredReference.SpanId, // should we do OR across passed references? preferredReference.Flags, CreateChildBaggage(), null)); }