### Question:
AllNodesVisitor implements NodeVisitor<V> { @Override public void visit(final ExtensionNode<V> extensionNode) { handler.accept(extensionNode); acceptAndUnload(extensionNode.getChild()); } AllNodesVisitor(final Consumer<Node<V>> handler); @Override void visit(final ExtensionNode<V> extensionNode); @Override void visit(final BranchNode<V> branchNode); @Override void visit(final LeafNode<V> leafNode); @Override void visit(final NullNode<V> nullNode);  }### Answer:
@Test public void visitExtension() { when(extensionNode.getChild()).thenReturn(storedNode); new AllNodesVisitor<String>(x -> {}).visit(extensionNode); verify(storedNode).unload(); }
@Test public void visitBranch() { when(branchNode.getChildren()).thenReturn(Collections.singletonList(storedNode)); new AllNodesVisitor<String>(x -> {}).visit(branchNode); verify(storedNode).unload(); }