def start_span(operation_name,
                   child_of: nil,
                   references: nil,
                   start_time: Time.now,
                   tags: nil,
                   ignore_active_scope: false)
      Span::NOOP_INSTANCE.tap do |span|
        return yield span if block_given?
      end
    end
def start_span(operation_name,
                   child_of: nil,
                   references: nil,
                   start_time: Time.now,
                   tags: nil,
                   ignore_active_scope: false)
      Span::NOOP_INSTANCE.tap do |span|
        return yield span if block_given?
      end
    end
Like #start_active_span, but the returned Span has not been registered via the
 ScopeManager.

 @param operation_name [String] The operation name for the Span
 @param child_of [SpanContext, Span] SpanContext that acts as a parent to
        the newly-started Span. If a Span instance is provided, its
        context is automatically substituted. See [Reference] for more
        information.

   If specified, the `references` parameter must be omitted.
 @param references [Array<Reference>] An array of reference
   objects that identify one or more parent SpanContexts.
 @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.
 @yield [Span] If passed an optional block, start_span will yield the
   newly-created span to the block. The span will be finished automatically
   after the block is executed.
 @return [Span, Object] If passed an optional block, start_span will return
  the block's return value, otherwise it returns the newly-started Span
  instance, which has not been automatically registered via the
  ScopeManager