### Question:
Converter implements TreeConverter<E, MutableNode<E>, PathCopyTree<E>> { @Override public final <S extends OpenNode<E, S>> PathCopyTree<E> build(Tree<E, S> sourceTree) { final S root = sourceTree.getRoot(); final PathCopyTree<E> newTree = new PathCopyTree<>(); final MutableNode<E> newRoot = newTree.setRoot(root.getElement()); final Iterator<? extends S> iterator = root.childIterator(); while (iterator.hasNext()) { duplicate(newRoot, iterator.next()); } return newTree; }  @Override final PathCopyTree<E> build(Tree<E, S> sourceTree); @Override Class<? extends Tree> forClass();  }### Answer:
@Test public void build() { final Tree<String, Node<String>> tree = getTree(); final Converter<String> converter = new Converter<>(); final PathCopyTree<String> pathCopyTree = converter.build(tree); assertEquals("root", pathCopyTree.getRoot().getElement()); assertTrue(pathCopyTree.getRoot().isLeaf()); assertFalse(pathCopyTree.isEmpty()); }