### Question:
NodeConverter extends AbstractNodeToRelatedTreeConverter<E, MutableNode<E>, PathCopyTree<E>> implements TreeBuilderFactoryAware { @Override public void setTreeBuilderFactory(TreeBuilderFactory treeBuilderFactory) { this.treeBuilderFactory = treeBuilderFactory; } NodeConverter(); @Override void setTreeBuilderFactory(TreeBuilderFactory treeBuilderFactory);  }### Answer:
@Test public void convertToSelf() { final BottomUpTreeBuilder<String, MutableNode<String>> builder = trees.treeBuilders().bottomUpBuilder(); final PathCopyTree<String> tree = builder.create("a", builder.create("b"), builder.create("c")).build(PathCopyTree.typeKey()); final KeyMappingProvider keyMappingProvider = KeyMappingProvider.get(); final NodeConverter<String> converter = new NodeConverter<>(); converter.setTreeBuilderFactory(new TreeBuilderFactoryImpl( keyMappingProvider, new TreeConstructorProvider(keyMappingProvider), new EmptyTreeConstructorProvider(keyMappingProvider), new TreeConverterProvider(keyMappingProvider), new EmptySortedTreeConstructorProviderImpl(keyMappingProvider))); final PathCopyTree<String> convertedTree = converter.treeFromRootNode(tree.getRoot()); final PathCopyNode<String> convertedRoot = convertedTree.getRoot(); assertEquals(2, convertedRoot.getNumberOfChildren()); final Iterator<? extends MutableNode<String>> iterator = convertedRoot.childIterator(); assertTrue(iterator.hasNext()); final MutableNode<String> child0 = iterator.next(); assertEquals("b", child0.getElement()); assertTrue(iterator.hasNext()); final MutableNode<String> child1 = iterator.next(); assertEquals("c", child1.getElement()); assertFalse(iterator.hasNext()); }