def start_span(operation_name, child_of: nil, references: nil, start_time: nil, tags: nil, ignore_active_scope: false)
      if child_of.nil? && references.nil? && !ignore_active_scope
        child_of = active_span
      end

      Span.new(
        tracer: self,
        operation_name: operation_name,
        child_of: child_of,
        references: references,
        start_micros: start_time.nil? ? LightStep.micros(Time.now) : LightStep.micros(start_time),
        tags: tags,
        max_log_records: max_log_records,
      )
    end
def start_span(operation_name, child_of: nil, references: nil, start_time: nil, tags: nil, ignore_active_scope: false)
      if child_of.nil? && references.nil? && !ignore_active_scope
        child_of = active_span
      end

      Span.new(
        tracer: self,
        operation_name: operation_name,
        child_of: child_of,
        references: references,
        start_micros: start_time.nil? ? LightStep.micros(Time.now) : LightStep.micros(start_time),
        tags: tags,
        max_log_records: max_log_records,
      )
    end
Starts a new span.

 @param operation_name [String] The operation name for the Span
 @param child_of [SpanContext] SpanContext that acts as a parent to
        the newly-started Span. If a Span instance is provided, its
        .span_context is automatically substituted.
 @param references [Array<SpanContext>] An array of SpanContexts that
         identify any parent SpanContexts of newly-started Span. If Spans
         are provided, their .span_context is automatically substituted.
 @param start_time [Time] When the Span started, if not now
 @param tags [Hash] Tags to assign to the Span at start time
 @param ignore_active_scope [Boolean] whether to create an implicit
   References#CHILD_OF reference to the ScopeManager#active.
 @return [Span]