static parse(
      sidxData, sidxOffset, uris, initSegmentReference, timestampOffset,
      appendWindowStart, appendWindowEnd) {
    const Mp4SegmentIndexParser = shaka.dash.Mp4SegmentIndexParser;

    let references;

    const parser = new shaka.util.Mp4Parser()
        .fullBox('sidx', (box) => {
          references = Mp4SegmentIndexParser.parseSIDX_(
              sidxOffset,
              initSegmentReference,
              timestampOffset,
              appendWindowStart,
              appendWindowEnd,
              uris,
              box);
        });

    if (sidxData) {
      parser.parse(sidxData);
    }

    if (references) {
      return references;
    } else {
      shaka.log.error('Invalid box type, expected "sidx".');
      throw new shaka.util.Error(
          shaka.util.Error.Severity.CRITICAL,
          shaka.util.Error.Category.MEDIA,
          shaka.util.Error.Code.MP4_SIDX_WRONG_BOX_TYPE);
    }
  }
Parses SegmentReferences from an ISO BMFF SIDX structure.
@param {BufferSource} sidxData The MP4's container's SIDX.
@param {number} sidxOffset The SIDX's offset, in bytes, from the start of
  the MP4 container.
@param {!Array<string>} uris The possible locations of the MP4 file that
  contains the segments.
@param {shaka.media.InitSegmentReference} initSegmentReference
@param {number} timestampOffset
@param {number} appendWindowStart
@param {number} appendWindowEnd
@return {!Array<!shaka.media.SegmentReference>}