### Question:
Buffer extends Limbo implements InventoryTracker { @Override public void waitUntilTransportable() { if(pages.size() <= 1) { synchronized (transportable) { try { transportable.wait(); } catch (InterruptedException e) {} } } } Buffer();  Buffer(String directory); static Iterator<Write> onDiskIterator(String location); @Override Map<Long, String> audit(long record); @Override Map<Long, String> audit(String key, long record); @Override 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>> context); @Override boolean contains(long record); @Override Set<String> describe(long record, long timestamp,
            Map<String, Set<TObject>> context); String dump(); @Override Map<Long, Set<TObject>> explore(Map<Long, Set<TObject>> context,
            long timestamp, String key, Operator operator, TObject... values); @Override Set<Long> getAllRecords(); @Restricted String getBackingStore(); @Override int getDesiredTransportSleepTimeInMs(); @Override Inventory getInventory(); @Restricted long getTimeOfLastTransport(); @Override boolean insert(Write write, boolean sync); @Override Iterator<Write> iterator(); @Override Map<String, Set<TObject>> select(long record, long timestamp,
            Map<String, Set<TObject>> context); @Override Set<TObject> select(String key, long record, long timestamp,
            Set<TObject> context); void setEnvironment(String environment); @Restricted void setInventory(Inventory inventory); @Restricted void setThreadNamePrefix(String threadNamePrefix); @Override void start(); @Override void stop(); @Override void sync(); @Override void transport(PermanentStore destination, boolean sync); @Override boolean verify(Write write, long timestamp, boolean exists); @Override TernaryTruth verifyFast(Write write, long timestamp); @Override void waitUntilTransportable();  }### Answer:
@Test public void testWaitUntilTransportable() throws InterruptedException { final AtomicLong later = new AtomicLong(0); Thread thread = new Thread(new Runnable() { @Override public void run() { ((Buffer) store).waitUntilTransportable(); later.set(Time.now()); } }); thread.start(); long before = Time.now(); while (!((Buffer) store).canTransport()) { before = Time.now(); add(TestData.getString(), TestData.getTObject(), TestData.getLong()); } thread.join(); Assert.assertTrue(later.get() > before); }