### Question:
PruneForest { public boolean affectsPath(Path path) { return this.pruneForest.rootMostValue(path) != null || !this.pruneForest.subtree(path).isEmpty(); } PruneForest(); private  PruneForest(ImmutableTree<Boolean> pruneForest); boolean prunesAnything(); boolean shouldPruneUnkeptDescendants(Path path); boolean shouldKeep(Path path); boolean affectsPath(Path path); PruneForest child(ChildKey key); PruneForest child(Path path); T foldKeptNodes(T startValue, final ImmutableTree.TreeVisitor<Void, T> treeVisitor); PruneForest prune(Path path); PruneForest keep(Path path); PruneForest keepAll(Path path, Set<ChildKey> children); PruneForest pruneAll(Path path, Set<ChildKey> children); @Override boolean equals(Object o); @Override int hashCode(); @Override String toString();  }### Answer:
@Test public void emptyDoesNotAffectAnyPaths() { PruneForest forest = new PruneForest(); assertFalse(forest.affectsPath(Path.getEmptyPath())); assertFalse(forest.affectsPath(new Path("foo"))); }