constructor(mediaElement, maxAttempts) {
    /** @private {HTMLMediaElement} */
    this.mediaElement_ = mediaElement;

    /** @private {number} */
    this.maxAttempts_ = maxAttempts;

    /** @private {number} */
    this.remainingAttempts_ = 0;

    /** @private {number} */
    this.originTime_ = 0;

    /** @private {number} */
    this.targetTime_ = 0;

    /** @private {shaka.util.Timer} */
    this.timer_ = new shaka.util.Timer(() => this.onTick_());
  }
@param {!HTMLMediaElement} mediaElement
   The media element that the mover can manipulate.

@param {number} maxAttempts
   To prevent us from infinitely trying to change the current time, the
   mover accepts a max attempts value. At most, the mover will check if the
   video moved |maxAttempts| times. If this is zero of negative, no
   attempts will be made.