AccordionList implements Iterable<RangedValue<T>> { public void add(@NonNull T value, int size) { add(mRangeList.size(), value, size); }  @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_AddZero() { AccordionList<String> list = new AccordionList<>(); list.add("a", 0); }
@Test(expected = IllegalArgumentException.class) public void test_AddNegative() { AccordionList<String> list = new AccordionList<>(); list.add("a", -1); }
@Test public void test_InsertAdd() { AccordionList<String> list = new AccordionList<>(); list.add(0, "a", 1); }
@Test public void test_InsertZero() { AccordionList<String> list = new AccordionList<>(); list.add(0, "a", 0); }
@Test(expected = IllegalArgumentException.class) public void test_InsertAddNegative() { AccordionList<String> list = new AccordionList<>(); list.add(0, "a", -1); }
@Test(expected = IndexOutOfBoundsException.class) public void test_InsertAddOutOfBounds() { AccordionList<String> list = new AccordionList<>(); list.add(1, "a", 1); }