processAndDispatchEvent_(event) {
    if (event && event.type) {
      switch (event.type) {
        case shaka.ads.Utils.ADS_LOADED: {
          const loadTime = (/** @type {!Object} */ (event))['loadTime'];
          this.stats_.addLoadTime(loadTime);
          break;
        }
        case shaka.ads.Utils.AD_STARTED: {
          this.stats_.incrementStarted();
          const ad = (/** @type {!Object} */ (event))['ad'];
          if (ad && !ad.isLinear()) {
            this.stats_.incrementOverlayAds();
          }
          break;
        }
        case shaka.ads.Utils.AD_COMPLETE:
          this.stats_.incrementPlayedCompletely();
          break;
        case shaka.ads.Utils.AD_SKIPPED:
          this.stats_.incrementSkipped();
          break;
        case shaka.ads.Utils.AD_ERROR:
          this.stats_.incrementErrors();
          break;
      }
    }
    this.dispatchEvent(event);
  }
@param {!shaka.util.FakeEvent} event
@private