I like to encapsulate creating the traverser, running it, and getting the result:

```scala
val captured = freeVarsOf(originalFunction)
```

It's a good habit that pays off more in other situations, like when the traverser is used in many places. In such cases, I'd make the traverser itself private.

But even here, it will help to keep this code reading well without dropping down to low-level details.