code: function _fire(target, type, detail) {
    let ev = new Event(type, { bubbles: true, cancelable: true, composed: true });
    ev.detail = detail;
    target.dispatchEvent(ev);
    // forward `preventDefault` in a clean way
    if (ev.defaultPrevented) {
      let preventer = detail.preventer || detail.sourceEvent;
      if (preventer && preventer.preventDefault) {
        preventer.preventDefault();
      }
    }
  }
docs: Dispatches an event on the `target` element of `type` with the given
  `detail`.
  @private
  @param {!EventTarget} target The element on which to fire an event.
  @param {string} type The type of event to fire.
  @param {!Object=} detail The detail object to populate on the event.
  @return {void}