Limbo extends BaseStore implements Iterable<Write> { @Override public abstract Iterator<Write> iterator();  @Override Map<Long, String> audit(long record); @Override Map<Long, String> audit(String key, long record); @Override Map<TObject, Set<Long>> browse(String key); @Override Map<TObject, Set<Long>> browse(String key, long timestamp); Map<TObject, Set<Long>> browse(String key, long timestamp,
            Map<TObject, Set<Long>> context); @Override Map<Long, Set<TObject>> chronologize(String key, long record,
            long start, long end); Map<Long, Set<TObject>> chronologize(String key, long record,
            long start, long end, Map<Long, Set<TObject>> context); @Override boolean contains(long record); Set<String> describe(long record, long timestamp,
            Map<String, Set<TObject>> context); Map<Long, Set<TObject>> explore(Map<Long, Set<TObject>> context,
            long timestamp, String key, Operator operator, TObject... values); final Set<TObject> gather(String key, long record, long timestamp,
            Set<TObject> context); @Override Set<Long> getAllRecords(); int getDesiredTransportSleepTimeInMs(); final boolean insert(Write write); abstract boolean insert(Write write, boolean sync); @Override abstract Iterator<Write> iterator(); @Override Memory memory(); @Override Set<Long> search(String key, String query); @Override Map<String, Set<TObject>> select(long record); @Override Map<String, Set<TObject>> select(long record, long timestamp); Map<String, Set<TObject>> select(long record, long timestamp,
            Map<String, Set<TObject>> context); @Override Set<TObject> select(String key, long record); @Override Set<TObject> select(String key, long record, long timestamp); Set<TObject> select(String key, long record, long timestamp,
            Set<TObject> context); void sync(); final void transport(PermanentStore destination); void transport(PermanentStore destination, boolean syncAfterEach); @Override boolean verify(String key, TObject value, long record); @Override boolean verify(String key, TObject value, long record,
            long timestamp); boolean verify(Write write, boolean exists); boolean verify(Write write, long timestamp); boolean verify(Write write, long timestamp, boolean exists); final TernaryTruth verifyFast(Write write); final TernaryTruth verifyFast(Write write, Inventory inventory); TernaryTruth verifyFast(Write write, long timestamp); TernaryTruth verifyFast(Write write, long timestamp,
            Inventory inventory); void waitUntilTransportable();  }
@Test public void testIterator() { List<Write> writes = getWrites(); for (Write write : writes) { add(write.getKey().toString(), write.getValue().getTObject(), write.getRecord().longValue()); } Iterator<Write> it0 = ((Limbo) store).iterator(); Iterator<Write> it1 = writes.iterator(); while (it1.hasNext()) { Assert.assertTrue(it0.hasNext()); Write w0 = it0.next(); Write w1 = it1.next(); Assert.assertEquals(w0, w1); } Assert.assertFalse(it0.hasNext()); }