### Question:
TreeWalkerFactoryImpl implements TreeWalkerFactory { @Override public <E, N extends OpenNode<E, N>, T extends Tree<E, N>> void walkInOrder(T tree, Walker<N> walker) { inOrderTraversalDriver.traverseTree(tree, walker); }  @Override void walkPreOrder(T tree, Walker<N> walker); @Override void walkInOrder(T tree, Walker<N> walker); @Override void walkPostOrder(T tree, Walker<N> walker); @Override void walkBreadthFirst(T tree, Walker<N> walker); @Override void walkElementsPreOrder(T tree, Walker<E> walker); @Override void walkElementsInOrder(T tree, Walker<E> walker); @Override void walkElementsPostOrder(T tree, Walker<E> walker); @Override void walkElementsBreadthFirst(T tree, Walker<E> walker); @Override void walkPreOrder(T tree, TreeWalker<N> walker); @Override void walkElementsPreOrder(T tree, TreeWalker<E> walker);  }### Answer:
@Test public void testWalkInOrder() { final TestWalker<MutableSettableStructuredNode<String>> walker = new TestWalker<>(); walkerFactory.walkInOrder(tree, walker); assertEquals(4, walker.elements.size()); assertEquals("c", walker.elements.get(0).getElement()); assertEquals("a", walker.elements.get(1).getElement()); assertEquals("root", walker.elements.get(2).getElement()); assertEquals("b", walker.elements.get(3).getElement()); }