// accept only specified files, folders and their direct children, allow navigate to them from above (FileIterator contract)
PathScope ps2 = new PathScope(true, false, true, scope);
// folders
errorCollector.assertTrue(!ps2.accept(Path.create("a/b/c/"))); // recursiveDirs = false
errorCollector.assertTrue(ps2.accept(Path.create("b/"))); // arg is parent to scope[1] (IOW, scope[1] is nested under arg)
errorCollector.assertTrue(ps2.accept(Path.create("d/"))); // scope[2] is nested under arg
errorCollector.assertTrue(ps2.accept(Path.create("d/e/"))); // scope[2] is nested under arg
errorCollector.assertTrue(!ps2.accept(Path.create("d/f/")));
errorCollector.assertTrue(!ps2.accept(Path.create("b/f/")));
// files
errorCollector.assertTrue(!ps2.accept(Path.create("a/b/c"))); // file, no exact match