matches(span) {
    let result = false

    let attrCount = 0
    let attrConditions = 0
    for (const attr of this.#requiredAttributes) {
      if (Object.hasOwn(span.attributes, attr) === true) {
        attrCount += 1
      }
    }

    for (const [key, value] of Object.entries(this.#requiredConditions)) {
      if ((Array.isArray(value) && value.includes(span.attributes[key])) || span.attributes[key] === value) {
        attrConditions += 1
      }
    }

    if (attrCount === this.#requiredAttributes.length && attrConditions === Object.keys(this.#requiredConditions).length) {
      result = true
    }

    return result
  }
Determines if the given span satifies this rule's requirements.

@param {object} span An OTEL span instance.

@returns {boolean} `true` if the span satisfies the rule.