### Question:
MutableTreeImplNodeConverter extends AbstractNodeToRelatedTreeConverter<E, MutableSettableNode<E>, MutableTree<E, MutableSettableNode<E>>> implements TreeBuilderFactoryAware { @Override public void setTreeBuilderFactory(TreeBuilderFactory treeBuilderFactory) { this.treeBuilderFactory = treeBuilderFactory; } MutableTreeImplNodeConverter(); @Override void setTreeBuilderFactory(TreeBuilderFactory treeBuilderFactory);  }### Answer:
@Test public void key() { final KeyMappingProvider keyMappingProvider = KeyMappingProvider.get(); final MutableTreeImplNodeConverter<String> converter = new MutableTreeImplNodeConverter<>(); converter.setTreeBuilderFactory(new TreeBuilderFactoryImpl( keyMappingProvider, new TreeConstructorProvider(keyMappingProvider), new EmptyTreeConstructorProvider(keyMappingProvider), new TreeConverterProvider(keyMappingProvider), new EmptySortedTreeConstructorProviderImpl(keyMappingProvider))); assertEquals(MutableTreeImpl.class, converter.forClass()); }
@Test public void convert() { final Trees trees = Trees.get(); final BottomUpTreeBuilder<String, MutableSettableNode<String>> builder = trees.treeBuilders().bottomUpBuilder(); final MutableTree<String, MutableSettableNode<String>> tree = builder.create("root", builder.create("left"), builder.create("right")) .build(MutableTree.typeKey()); final KeyMappingProvider keyMappingProvider = KeyMappingProvider.get(); final MutableTreeImplNodeConverter<String> converter = new MutableTreeImplNodeConverter<>(); converter.setTreeBuilderFactory(new TreeBuilderFactoryImpl( keyMappingProvider, new TreeConstructorProvider(keyMappingProvider), new EmptyTreeConstructorProvider(keyMappingProvider), new TreeConverterProvider(keyMappingProvider), new EmptySortedTreeConstructorProviderImpl(keyMappingProvider))); final MutableTree<String, MutableSettableNode<String>> newTree = converter.treeFromRootNode(tree.getRoot()); assertFalse(newTree.isEmpty()); assertEquals("root", newTree.getRoot().getElement()); assertFalse(newTree.getRoot().isLeaf()); }