# Functions
CreateChildSpan takes a message part, extracts an existing span if there is one and returns child span.
CreateChildSpans takes a message, extracts spans per message part and returns a slice of child spans.
FinishSpans calls Finish on all message parts containing a span.
GetSpan returns a span attached to a message part.
InitSpan sets up an OpenTracing span on a message part if one does not already exist.
InitSpanFromParent sets up an OpenTracing span as children of a parent span on a message part if one does not already exist.
InitSpans sets up OpenTracing spans on each message part if one does not already exist.
InitSpansFromParent sets up OpenTracing spans as children of a parent span on each message part if one does not already exist.
IterateWithChildSpans iterates all the parts of a message and, for each part, creates a new span from an existing span attached to the part and calls a func with that span before finishing the child span.
PartsWithChildSpans takes a slice of message parts, extracts spans per part, creates new child spans, and returns a new slice of parts with those spans embedded.
WithChildSpans takes a message, extracts spans per message part, creates new child spans, and returns a new message with those spans embedded.
WithSiblingSpans takes a message, extracts spans per message part, creates new sibling spans, and returns a new message with those spans embedded.