func (s *Span) String() string {
	if s == nil {
		return "<nil>"
	}
	return s.internal.String()
}
String prints a string representation of a span.
package trace
import (
	"context"
)
var DefaultTracer Tracer = &tracer{}
type Tracer interface {
	StartSpan(ctx context.Context, name string, o ...StartOption) (context.Context, *Span)
	StartSpanWithRemoteParent(ctx context.Context, name string, parent SpanContext, o ...StartOption) (context.Context, *Span)
	FromContext(ctx context.Context) *Span
	NewContext(parent context.Context, s *Span) context.Context
}
func StartSpan(ctx context.Context, name string, o ...StartOption) (context.Context, *Span) {
	return DefaultTracer.StartSpan(ctx, name, o...)
}
func StartSpanWithRemoteParent(ctx context.Context, name string, parent SpanContext, o ...StartOption) (context.Context, *Span) {
	return DefaultTracer.StartSpanWithRemoteParent(ctx, name, parent, o...)
}
func FromContext(ctx context.Context) *Span {
	return DefaultTracer.FromContext(ctx)
}
func NewContext(parent context.Context, s *Span) context.Context {
	return DefaultTracer.NewContext(parent, s)
}
type SpanInterface interface {
	IsRecordingEvents() bool
	End()
	SpanContext() SpanContext
	SetName(name string)
	SetStatus(status Status)
	AddAttributes(attributes ...Attribute)
	Annotate(attributes []Attribute, str string)
	Annotatef(attributes []Attribute, format string, a ...interface{})
	AddMessageSendEvent(messageID, uncompressedByteSize, compressedByteSize int64)
	AddMessageReceiveEvent(messageID, uncompressedByteSize, compressedByteSize int64)
	AddLink(l Link)
	String() string
}
func NewSpan(s SpanInterface) *Span {
	return &Span{internal: s}
}
type Span struct {
	internal SpanInterface
}
func (s *Span) Internal() SpanInterface {
	return s.internal
}
func (s *Span) IsRecordingEvents() bool {
	if s == nil {
		return false
	}
	return s.internal.IsRecordingEvents()
}
func (s *Span) End() {
	if s == nil {
		return
	}
	s.internal.End()
}
func (s *Span) SpanContext() SpanContext {
	if s == nil {
		return SpanContext{}
	}
	return s.internal.SpanContext()
}
func (s *Span) SetName(name string) {
	if !s.IsRecordingEvents() {
		return
	}
	s.internal.SetName(name)
}
func (s *Span) SetStatus(status Status) {
	if !s.IsRecordingEvents() {
		return
	}
	s.internal.SetStatus(status)
}
func (s *Span) AddAttributes(attributes ...Attribute) {
	if !s.IsRecordingEvents() {
		return
	}
	s.internal.AddAttributes(attributes...)
}
func (s *Span) Annotate(attributes []Attribute, str string) {
	if !s.IsRecordingEvents() {
		return
	}
	s.internal.Annotate(attributes, str)
}
func (s *Span) Annotatef(attributes []Attribute, format string, a ...interface{}) {
	if !s.IsRecordingEvents() {
		return
	}
	s.internal.Annotatef(attributes, format, a...)
}
func (s *Span) AddMessageSendEvent(messageID, uncompressedByteSize, compressedByteSize int64) {
	if !s.IsRecordingEvents() {
		return
	}
	s.internal.AddMessageSendEvent(messageID, uncompressedByteSize, compressedByteSize)
}
func (s *Span) AddMessageReceiveEvent(messageID, uncompressedByteSize, compressedByteSize int64) {
	if !s.IsRecordingEvents() {
		return
	}
	s.internal.AddMessageReceiveEvent(messageID, uncompressedByteSize, compressedByteSize)
}
func (s *Span) AddLink(l Link) {
	if !s.IsRecordingEvents() {
		return
	}
	s.internal.AddLink(l)
}