def set_tag(key, value)
      if custom?
        @data[:data][:sdk][:custom] ||= {}
        @data[:data][:sdk][:custom][:tags] ||= {}
        @data[:data][:sdk][:custom][:tags][key] = value

        if key.to_sym == :'span.kind'
          case value.to_sym
          when :server || :consumer
            @data[:data][:sdk][:type] = :entry
          when :client || :producer
            @data[:data][:sdk][:type] = :exit
          end
        end
      else
        if !@data[:data].key?(key)
          @data[:data][key] = value
        elsif value.is_a?(Hash) && self[:data][key].is_a?(Hash)
          @data[:data][key].merge!(value)
        else
          @data[:data][key] = value
        end
      end
      self
    end
def set_tag(key, value)
      if custom?
        @data[:data][:sdk][:custom] ||= {}
        @data[:data][:sdk][:custom][:tags] ||= {}
        @data[:data][:sdk][:custom][:tags][key] = value

        if key.to_sym == :'span.kind'
          case value.to_sym
          when :server || :consumer
            @data[:data][:sdk][:type] = :entry
          when :client || :producer
            @data[:data][:sdk][:type] = :exit
          end
        end
      else
        if !@data[:data].key?(key)
          @data[:data][key] = value
        elsif value.is_a?(Hash) && self[:data][key].is_a?(Hash)
          @data[:data][key].merge!(value)
        else
          @data[:data][key] = value
        end
      end
      self
    end
Set a tag value on this span
 Spec: OpenTracing API

 @param key [String] the key of the tag
 @param value [String, Numeric, Boolean] the value of the tag. If it's not
 a String, Numeric, or Boolean it will be encoded with to_s