def METHOD_NAME(
    self,
    name,  # type: str
    context=None,  # type: Optional[OtelContext]
    kind=OtelSpanKind.INTERNAL,  # type: OtelSpanKind
    attributes=None,  # type: Optional[Mapping[str, OtelAttributeValue]]
    links=None,  # type: Optional[Sequence[OtelLink]]
    start_time=None,  # type: Optional[int]
    record_exception=True,  # type: bool
    set_status_on_exception=True,  # type: bool
):
    # type: (...) -> OtelSpan
    """Creates and starts an opentelemetry span."""
    # Get active otel span
    curr_otel_span = get_current_span(context)
    if curr_otel_span is INVALID_SPAN:
        # There is no active datadog/otel span
        dd_active = None  # type: Optional[Union[ddtrace.context.Context, ddtrace.Span]]
    elif isinstance(curr_otel_span, Span):
        # Get underlying ddtrace span from the active otel span
        dd_active = curr_otel_span._ddspan
    elif isinstance(curr_otel_span, OtelSpan):
        # Otel span was not generated by the ddtrace library and does not have an underlying ddtrace span.
        # Convert otel span to a ddtrace context object.
        trace_id, span_id, _, tf, ts, _ = curr_otel_span.get_span_context()
        sp = 1 if tf is TraceFlags.SAMPLED else 0
        meta = {W3C_TRACESTATE_KEY: ts.to_header()} if ts else None  # type: Optional[_MetaDictType]
        dd_active = ddtrace.context.Context(trace_id, span_id, sampling_priority=sp, meta=meta)
    else:
        log.error(
            "Programming Error: The current active Span is not supported by ddtrace. The following span will not "
            "have a parent: %s. Please open a github issue at: https://github.com/Datadog/dd-trace-py and avoid "
            "setting the ddtrace OpenTelemetry TracerProvider.",
            curr_otel_span,
        )
    # Create a new Datadog span (not activated), then return a valid OTel span
    dd_span = self._tracer.METHOD_NAME(name, child_of=dd_active, activate=False, span_api=SPAN_API_OTEL)
    return Span(
        dd_span,
        kind=kind,
        attributes=attributes,
        start_time=start_time,
        record_exception=record_exception,
        set_status_on_exception=set_status_on_exception,
    )