@Test(timeout = 8000)
public void testSingleSourceManyIterators() throws InterruptedException {

    BlockingObservable<Long> source = Observable.interval(200, TimeUnit.MILLISECONDS).take(10).toBlockingObservable();
    Iterable<Long> iter = source.next();
    for (int j = 0; j < 3; j++) {
        Iterator<Long> it = iter.iterator();
        for (int i = 0; i < 9; i++) {
            // hasNext has to set the waiting to true, otherwise, all onNext will be skipped
            Assert.assertEquals(true, it.hasNext());
            Assert.assertEquals(Long.valueOf(i), it.next());
        }
        Thread.sleep(400);
        Assert.assertEquals(false, it.hasNext());
    }
}