### Question:
DefaultAtomicDocumentTree implements AtomicDocumentTree<V> { @Override public DocumentPath root() { return DocumentPath.ROOT; } DefaultAtomicDocumentTree();  DefaultAtomicDocumentTree(Supplier<Long> versionSupplier, Ordering ordering);   DefaultAtomicDocumentTree(Supplier<Long> versionSupplier, DefaultDocumentTreeNode<V> root); @Override String name(); @Override PrimitiveType type(); @Override PrimitiveProtocol protocol(); @Override DocumentPath root(); @Override Map<String, Versioned<V>> getChildren(DocumentPath path); @Override Versioned<V> get(DocumentPath path); @Override Versioned<V> set(DocumentPath path, V value); @Override boolean create(DocumentPath path, V value); @Override boolean createRecursive(DocumentPath path, V value); @Override boolean replace(DocumentPath path, V newValue, long version); @Override boolean replace(DocumentPath path, V newValue, V currentValue); @Override Versioned<V> remove(DocumentPath path); @Override void addListener(DocumentPath path, DocumentTreeEventListener<V> listener, Executor executor); @Override void removeListener(DocumentTreeEventListener<V> listener); @Override void close(); @Override AsyncAtomicDocumentTree<V> async();  }### Answer:
@Test public void testTreeConstructor() { AtomicDocumentTree<String> tree = new DefaultAtomicDocumentTree<>(); Assert.assertEquals(tree.root(), path("/")); }