handleRollover_(value, reference) {
    const MAX_TS = 8589934592;
    const RO_THRESH = 4294967296;

    let direction = 1;

    if (value > reference) {
      // If the current timestamp value is greater than our reference timestamp
      // and we detect a timestamp rollover, this means the roll over is
      // happening in the opposite direction.
      // Example scenario: Enter a long stream/video just after a rollover
      // occurred. The reference point will be set to a small number, e.g. 1.
      // The user then seeks backwards over the rollover point. In loading this
      // segment, the timestamp values will be very large, e.g. 2^33 - 1. Since
      // this comes before the data we loaded previously, we want to adjust the
      // time stamp to be `value - 2^33`.
      direction = -1;
    }

    // Note: A seek forwards or back that is greater than the RO_THRESH
    // (2^32, ~13 hours) will cause an incorrect adjustment.
    while (Math.abs(reference - value) > RO_THRESH) {
      value += (direction * MAX_TS);
    }

    return value;
  }
@param {number} value
@param {number} reference
@return {number}
@private