### Question:
History implements Iterable<Object> { @NonNull public <T> Iterable<T> framesFromTop() { return new HistoryIterable<>(history, false); } private  History(List<Object> history); @NonNull static Builder emptyBuilder(); @NonNull static History single(@NonNull Object key); @NonNull Iterable<T> framesFromBottom(); @NonNull Iterable<T> framesFromTop(); @Deprecated @NonNull Iterator<T> reverseIterator(); @Deprecated @NonNull @Override Iterator<Object> iterator(); int size(); @NonNull T top(); @NonNull T peek(int index); @NonNull Builder buildUpon(); @Override String toString();  }### Answer:
@Test public void framesFromTop() { List<Object> paths = new ArrayList<>(Arrays.<Object>asList(ABLE, BAKER, CHARLIE)); History history = History.emptyBuilder().pushAll(paths).build(); Iterator<Object> iterator = history.framesFromTop().iterator(); assertThat(iterator.next()).isSameAs(CHARLIE); assertThat(iterator.next()).isSameAs(BAKER); assertThat(iterator.next()).isSameAs(ABLE); assertThat(iterator.hasNext()).isFalse(); }