def __init__(
        self,
        *,
        span_type: SpanAttributes.SpanType = SpanAttributes.SpanType.UNKNOWN,
        attributes: Attributes = None,
        **kwargs,
    ) -> None:
        """
        Decorator for marking functions to be instrumented with OpenTelemetry
        tracing.

        span_type: Span type to be used for the span.
        attributes:
            A dictionary or a callable that returns a dictionary of attributes
            (i.e. a `typing.Dict[str, typing.Any]`) to be set on the span.
        """
        self.span_type = span_type
        if span_type == SpanAttributes.SpanType.RECORD_ROOT:
            logger.warning(
                "Cannot explicitly set 'record_root' span type, setting to 'unknown'."
            )
            span_type = SpanAttributes.SpanType.UNKNOWN
        if attributes is None:
            attributes = {}
        self.attributes = attributes
        self.is_app_specific_instrumentation = kwargs.get(
            "is_app_specific_instrumentation", False
        )
        self.create_new_span = kwargs.get("create_new_span", True)
        self.only_set_user_defined_attributes = kwargs.get(
            "only_set_user_defined_attributes", False
        )
        self.must_be_first_wrapper = kwargs.get("must_be_first_wrapper", False)

        Decorator for marking functions to be instrumented with OpenTelemetry
        tracing.

        span_type: Span type to be used for the span.
        attributes:
            A dictionary or a callable that returns a dictionary of attributes
            (i.e. a `typing.Dict[str, typing.Any]`) to be set on the span.
        
src/core/trulens/core/otel/instrument.py