function startInactiveSpan(context) {
  if (!hasTracingEnabled.hasTracingEnabled()) {
    return undefined;
  }

  const spanContext = normalizeContext(context);
  // eslint-disable-next-line deprecation/deprecation
  const hub$1 = hub.getCurrentHub();
  const parentSpan = context.scope
    ? // eslint-disable-next-line deprecation/deprecation
      context.scope.getSpan()
    : getActiveSpan();

  const shouldSkipSpan = context.onlyIfParent && !parentSpan;

  if (shouldSkipSpan) {
    return undefined;
  }

  const scope = context.scope || exports$1.getCurrentScope();

  // Even though we don't actually want to make this span active on the current scope,
  // we need to make it active on a temporary scope that we use for event processing
  // as otherwise, it won't pick the correct span for the event when processing it
  const temporaryScope = (scope ).clone();

  return createChildSpanOrTransaction(hub$1, {
    parentSpan,
    spanContext,
    forceTransaction: context.forceTransaction,
    scope: temporaryScope,
  });
}
Creates a span. This span is not set as active, so will not get automatic instrumentation spans
as children or be able to be accessed via `Sentry.getSpan()`.

If you want to create a span that is set as active, use {@link startSpan}.

Note that if you have not enabled tracing extensions via `addTracingExtensions`
or you didn't set `tracesSampleRate` or `tracesSampler`, this function will not generate spans
and the `span` returned from the callback will be undefined.