@Test(dataProvider = "subSeries")
 public void test_subSeries(LocalDate start, LocalDate end, int[] expected) {
   LocalDateDoubleTimeSeries base =
       LocalDateDoubleTimeSeries.builder().putAll(DATES_2010_14, VALUES_10_14).build();
   LocalDateDoubleTimeSeries test = base.subSeries(start, end);
   assertEquals(test.size(), expected.length);
   for (int i = 0; i < DATES_2010_14.size(); i++) {
     if (Arrays.binarySearch(expected, i) >= 0) {
       assertEquals(test.get(DATES_2010_14.get(i)), OptionalDouble.of(VALUES_10_14.get(i)));
     } else {
       assertEquals(test.get(DATES_2010_14.get(i)), OptionalDouble.empty());
     }
   }
 }
 public void test_subSeries_startAfterEnd() {
   LocalDateDoubleTimeSeries base =
       LocalDateDoubleTimeSeries.builder().putAll(DATES_2010_14, VALUES_10_14).build();
   assertThrowsIllegalArg(() -> base.subSeries(date(2011, 1, 2), DATE_2011_01_01));
 }