### Question:
TimeSeriesCollection extends AbstractIntervalXYDataset implements XYDataset, IntervalXYDataset, DomainInfo, XYDomainInfo,
        XYRangeInfo, VetoableChangeListener, Serializable { public void addSeries(TimeSeries series) { ParamChecks.nullNotPermitted(series, "series"); this.data.add(series); series.addChangeListener(this); series.addVetoableChangeListener(this); fireDatasetChanged(); } TimeSeriesCollection();  TimeSeriesCollection(TimeZone zone);  TimeSeriesCollection(TimeSeries series);  TimeSeriesCollection(TimeSeries series, TimeZone zone); @Override DomainOrder getDomainOrder(); TimePeriodAnchor getXPosition(); void setXPosition(TimePeriodAnchor anchor); List<TimeSeries> getSeries(); @Override int getSeriesCount(); int indexOf(TimeSeries series); TimeSeries getSeries(int series); TimeSeries getSeries(Comparable key); @Override Comparable getSeriesKey(int series); int getSeriesIndex(Comparable key); void addSeries(TimeSeries series); void removeSeries(TimeSeries series); void removeSeries(int index); void removeAllSeries(); @Override int getItemCount(int series); @Override double getXValue(int series, int item); @Override Number getX(int series, int item); @Override synchronized Number getStartX(int series, int item); @Override synchronized Number getEndX(int series, int item); @Override Number getY(int series, int item); @Override Number getStartY(int series, int item); @Override Number getEndY(int series, int item); int[] getSurroundingItems(int series, long milliseconds); @Override double getDomainLowerBound(boolean includeInterval); @Override double getDomainUpperBound(boolean includeInterval); @Override Range getDomainBounds(boolean includeInterval); @Override Range getDomainBounds(List<Comparable> visibleSeriesKeys,
            boolean includeInterval); Range getRangeBounds(boolean includeInterval); @Override Range getRangeBounds(List<Comparable> visibleSeriesKeys, 
            Range xRange, boolean includeInterval); @Override void vetoableChange(PropertyChangeEvent e); @Override boolean equals(Object obj); @Override int hashCode(); @Override Object clone();  }### Answer:
@Test public void testFindDomainBounds() { TimeSeriesCollection dataset = new TimeSeriesCollection(TimeZone.getTimeZone("Europe/Paris")); List<Comparable> visibleSeriesKeys = new java.util.ArrayList<Comparable>(); Range r = DatasetUtilities.findDomainBounds(dataset, visibleSeriesKeys, true); assertNull(r); TimeSeries s1 = new TimeSeries("S1"); dataset.addSeries(s1); visibleSeriesKeys.add("S1"); r = DatasetUtilities.findDomainBounds(dataset, visibleSeriesKeys, true); assertNull(r); TimeZone saved = TimeZone.getDefault(); TimeZone.setDefault(TimeZone.getTimeZone("Europe/Paris")); s1.add(new Year(2008), 8.0); r = DatasetUtilities.findDomainBounds(dataset, visibleSeriesKeys, true); assertEquals(1199142000000.0, r.getLowerBound(), EPSILON); assertEquals(1230764399999.0, r.getUpperBound(), EPSILON); TimeSeries s2 = new TimeSeries("S2"); dataset.addSeries(s2); s2.add(new Year(2009), 9.0); s2.add(new Year(2010), 10.0); r = DatasetUtilities.findDomainBounds(dataset, visibleSeriesKeys, true); assertEquals(1199142000000.0, r.getLowerBound(), EPSILON); assertEquals(1230764399999.0, r.getUpperBound(), EPSILON); visibleSeriesKeys.add("S2"); r = DatasetUtilities.findDomainBounds(dataset, visibleSeriesKeys, true); assertEquals(1199142000000.0, r.getLowerBound(), EPSILON); assertEquals(1293836399999.0, r.getUpperBound(), EPSILON); TimeZone.setDefault(saved); }