AccordionList implements Iterable<RangedValue<T>> { @NonNull public Range span() { return new Range( 0, mRangeList.isEmpty() ? 0 : mRangeList.get(mRangeList.size() - 1).mRange.mUpper); }  @NonNull @Override Iterator<RangedValue<T>> iterator(); @Override int hashCode(); @Override boolean equals(Object object); @NonNull T valueAt(int location); @NonNull RangedValue<T> rangedValueAt(int location); @NonNull RangedValue<T> get(int entryIndex); @NonNull Range span(); int size(); boolean isEmpty(); void add(@NonNull T value, int size); void add(int entryIndex, @NonNull T value, int size); void addAll(@NonNull AccordionList<T> values); void set(int entryIndex, @NonNull T value, int size); void clear(); void remove(int entryIndex);  }
@Test public void test_SpanEmpty() { assertEquals(new Range(0, 0), new AccordionList().span()); }