code: function createClock(timeColumn, tableStructure) {
    var availabilityCollection = new TimeIntervalCollection();
    timeColumn._timeIntervals
      .filter(function(availability) {
        return defined(availability && availability.start);
      })
      .forEach(function(availability) {
        availabilityCollection.addInterval(availability);
      });
    if (!defined(timeColumn._clock)) {
      if (
        availabilityCollection.length > 0 &&
        !availabilityCollection.start.equals(Iso8601.MINIMUM_VALUE)
      ) {
        var startTime = availabilityCollection.start;
        var stopTime = availabilityCollection.stop;
        var totalSeconds = JulianDate.secondsDifference(stopTime, startTime);
        var multiplier = Math.round(totalSeconds / 120.0);
  
        if (
          defined(tableStructure.idColumnNames) &&
          tableStructure.idColumnNames.length > 0
        ) {
          stopTime = timeColumn.julianDates.reduce((d1, d2) =>
            JulianDate.greaterThan(d1, d2) ? d1 : d2
          );
        }
  
        var clock = new DataSourceClock();
        clock.startTime = JulianDate.clone(startTime);
        clock.stopTime = JulianDate.clone(stopTime);
        clock.clockRange = ClockRange.LOOP_STOP;
        clock.multiplier = multiplier;
        clock.currentTime = JulianDate.clone(startTime);
        clock.clockStep = ClockStep.SYSTEM_CLOCK_MULTIPLIER;
        return clock;
      }
    }
    return timeColumn._clock;
  }
docs: Returns a DataSourceClock out of this column. Only call if this is a time column.
  @private