code: function EventTimelineSet(room, opts) {
      this.room = room;
  
      this._timelineSupport = Boolean(opts.timelineSupport);
      this._liveTimeline = new EventTimeline(this);
  
      // just a list - *not* ordered.
      this._timelines = [this._liveTimeline];
      this._eventIdToTimeline = {};
  
      this._filter = opts.filter || null;
  }
docs: Construct a set of EventTimeline objects, typically on behalf of a given
  room.  A room may have multiple EventTimelineSets for different levels
  of filtering.  The global notification list is also an EventTimelineSet, but
  lacks a room.
  
  <p>This is an ordered sequence of timelines, which may or may not
  be continuous. Each timeline lists a series of events, as well as tracking
  the room state at the start and the end of the timeline (if appropriate).
  It also tracks forward and backward pagination tokens, as well as containing
  links to the next timeline in the sequence.
  
  <p>There is one special timeline - the 'live' timeline, which represents the
  timeline to which events are being added in real-time as they are received
  from the /sync API. Note that you should not retain references to this
  timeline - even if it is the current timeline right now, it may not remain
  so if the server gives us a timeline gap in /sync.
  
  <p>In order that we can find events from their ids later, we also maintain a
  map from event_id to timeline and index.
  
  @constructor
  @param {?Room} room      the optional room for this timelineSet
  @param {Object} opts     hash of options inherited from Room.
  opts.timelineSupport gives whether timeline support is enabled
  opts.filter is the filter object, if any, for this timelineSet.