### Question:
SparseLocalDateDoubleTimeSeries implements ImmutableBean, Serializable, LocalDateDoubleTimeSeries { @Override public LocalDateDoubleTimeSeries subSeries(LocalDate startInclusive, LocalDate endExclusive) { ArgChecker.notNull(startInclusive, "startInclusive"); ArgChecker.notNull(endExclusive, "endExclusive"); if (endExclusive.isBefore(startInclusive)) { throw new IllegalArgumentException( "Invalid sub series, end before start: " + startInclusive + " to " + endExclusive); } if (isEmpty() || startInclusive.equals(endExclusive)) { return EMPTY; } int startPos = Arrays.binarySearch(dates, startInclusive); startPos = startPos >= 0 ? startPos : -startPos - 1; int endPos = Arrays.binarySearch(dates, endExclusive); endPos = endPos >= 0 ? endPos : -endPos - 1; LocalDate[] timesArray = Arrays.copyOfRange(dates, startPos, endPos); double[] valuesArray = Arrays.copyOfRange(values, startPos, endPos); return createUnsafe(timesArray, valuesArray); } @ImmutableConstructor private  SparseLocalDateDoubleTimeSeries(LocalDate[] dates, double[] values); private  SparseLocalDateDoubleTimeSeries(LocalDate[] dates, double[] values, boolean trusted); @Override int size(); @Override boolean isEmpty(); @Override boolean containsDate(LocalDate date); @Override OptionalDouble get(LocalDate date); @Override LocalDate getLatestDate(); @Override double getLatestValue(); @Override LocalDateDoubleTimeSeries subSeries(LocalDate startInclusive, LocalDate endExclusive); @Override LocalDateDoubleTimeSeries headSeries(int numPoints); @Override LocalDateDoubleTimeSeries tailSeries(int numPoints); @Override Stream<LocalDateDoublePoint> stream(); @Override Stream<LocalDate> dates(); @Override DoubleStream values(); @Override void forEach(ObjDoubleConsumer<LocalDate> action); @Override LocalDateDoubleTimeSeries mapDates(Function<? super LocalDate, ? extends LocalDate> mapper); @Override LocalDateDoubleTimeSeries mapValues(DoubleUnaryOperator mapper); @Override LocalDateDoubleTimeSeries filter(ObjDoublePredicate<LocalDate> predicate); @Override LocalDateDoubleTimeSeriesBuilder toBuilder(); @Override boolean equals(Object obj); @Override int hashCode(); @Override String toString(); static SparseLocalDateDoubleTimeSeries.Meta meta(); @Override SparseLocalDateDoubleTimeSeries.Meta metaBean();  }### Answer:
@Test public void test_subSeries_startAfterEnd() { LocalDateDoubleTimeSeries base = LocalDateDoubleTimeSeries.builder().putAll(DATES_2010_14, VALUES_10_14).build(); assertThatIllegalArgumentException().isThrownBy(() -> base.subSeries(date(2011, 1, 2), DATE_2011_01_01)); }