### Question:
SortedRangeSet implements Iterable<R> { @Override public Iterator<R> iterator() { return set.iterator(); } SortedRangeSet(); void addAll(SortedRangeSet<C, R> ranges); void addAll(Collection<R> ranges); void add(R range); void removeAll(SortedRangeSet<C, R> ranges); void removeAll(Collection<R> ranges); boolean remove(R range); SortedRangeSet<C, R> intersection(SortedRangeSet<C, R> other); @Override final boolean equals(Object o); @Override final int hashCode(); boolean contains(R range); void clear(); boolean isEmpty(); int size(); Set<R> unmodifiableSet(); Set<R> modifiableSet(); R getSingleRange(); R floor(R range); R ceiling(R range); @Override Iterator<R> iterator(); @Override String toString();  }### Answer:
@Test public void testIterator() { AsnRange range1 = new AsnRange(Asn.of(0l), Asn.of(5l)); AsnRange range2 = new AsnRange(Asn.of(10l), Asn.of(20l)); subject.add(range1); subject.add(range2); Iterator<AsnRange> it = subject.iterator(); assertTrue(it.hasNext()); assertEquals(range1, it.next()); it.remove(); assertTrue(it.hasNext()); assertEquals(range2, it.next()); it.remove(); assertTrue(subject.isEmpty()); }