### Question:
TreeIteratorFactoryImpl implements TreeIteratorFactory { @Override public <E, N extends OpenNode<E, N>> Iterator<E> breadthFirstElementsIterator(Tree<E, N> tree) { return new NodeToElementIterators<>(new BreadthFirstIterator<>(tree, iteratorRemoveHandlerProvider.get(tree))); } TreeIteratorFactoryImpl(IteratorRemoveHandlerProvider iteratorRemoveHandlerProvider); @Override Iterator<N> preOrderIterator(T tree); @Override Iterator<N> inOrderIterator(T tree); @Override Iterator<N> postOrderIterator(T tree); @Override Iterator<N> breadthFirstIterator(T tree); @Override Iterator<E> preOrderElementsIterator(Tree<E, N> tree); @Override Iterator<E> inOrderElementsIterator(Tree<E, N> tree); @Override Iterator<E> postOrderElementsIterator(Tree<E, N> tree); @Override Iterator<E> breadthFirstElementsIterator(Tree<E, N> tree);  }### Answer:
@Test public void breadthFirstElementsIterator() { final Iterator<String> iterator = iteratorFactory.breadthFirstElementsIterator(tree); assertEquals("root", iterator.next()); assertEquals("a", iterator.next()); assertEquals("b", iterator.next()); assertEquals("c", iterator.next()); }