class ElasticAPM::Transaction

def span(name, type = nil, backtrace: nil, context: nil)

rubocop:disable Metrics/MethodLength
def span(name, type = nil, backtrace: nil, context: nil)
  unless sampled?
    return yield if block_given?
    return
  end
  if spans.length >= instrumenter.config.transaction_max_spans
    @dropped_spans += 1
    return yield if block_given?
    return
  end
  span = build_and_start_span(name, type, context, backtrace)
  return span unless block_given?
  begin
    result = yield span
  ensure
    span.done
  end
  result
end