def start_child_span(parent_span, operation_name, tags=None, start_time=None):
    """A shorthand method that starts a child_of span for a given parent span.

    Equivalent to calling

        parent_span.tracer().start_span(
            operation_name,
            references=opentracing.child_of(parent_span.context),
            tags=tags,
            start_time=start_time)

    :param parent_span: the Span which will act as the parent in the returned
        Span's child_of reference.
    :param operation_name: the operation name for the child Span instance
    :param tags: optional dict of Span Tags. The caller gives up ownership of
        that dict, because the Tracer may use it as-is to avoid extra data
        copying.
    :param start_time: an explicit Span start time as a unix timestamp per
        time.time().

    :return: Returns an already-started Span instance.
    """
    return parent_span.tracer.start_span(operation_name=operation_name,
        child_of=parent_span, tags=tags, start_time=start_time)
