Either way you need you pass in the ancestors set to avoid visiting nodes you've already visited. Right now, because of the default argument of `mutable.Set.empty`, the outsider calls this function this way: `rdd.getNarrowAncestors()`. Not sure if I understand what you're suggesting but do you mean have the outsider call it with `rdd.getNarrowAncestors` instead (without the parentheses)? In particular, you're suggesting something like

```
def getNarrowAncestors = {
  getNarrowDependencies(new empty set)
}

private def getNarrowAncestors(ancestors) = {
  // actual recursive logic
}
```

right?