static parseMediaSegments_(context) {
    const Functional = shaka.util.Functional;
    /** @type {!Array<!shaka.extern.xml.Node>} */
    const segmentLists = [
      context.representation.segmentList,
      context.adaptationSet.segmentList,
      context.period.segmentList,
    ].filter(Functional.isNotNull);

    const TXml = shaka.util.TXml;
    const StringUtils = shaka.util.StringUtils;
    // Search each SegmentList for one with at least one SegmentURL element,
    // select the first one, and convert each SegmentURL element to a tuple.
    return segmentLists
        .map((node) => { return TXml.findChildren(node, 'SegmentURL'); })
        .reduce((all, part) => { return all.length > 0 ? all : part; })
        .map((urlNode) => {
          if (urlNode.attributes['indexRange'] &&
              !context.indexRangeWarningGiven) {
            context.indexRangeWarningGiven = true;
            shaka.log.warning(
                'We do not support the SegmentURL@indexRange attribute on ' +
                'SegmentList.  We only use the SegmentList@duration ' +
                'attribute or SegmentTimeline, which must be accurate.');
          }

          const uri = StringUtils.htmlUnescape(urlNode.attributes['media']);
          const range = TXml.parseAttr(
              urlNode, 'mediaRange', TXml.parseRange,
              {start: 0, end: null});
          return {mediaUri: uri, start: range.start, end: range.end};
        });
  }
Parses the media URIs from the context.

@param {shaka.dash.DashParser.Context} context
@return {!Array<shaka.dash.SegmentList.MediaSegment>}
@private