Instead of running another child process, we can use the same process to run
Button recursively.
There are a several advantages to doing it this way:
- The same thread pool can be reused. Thus, the correct number of worker
threads is always used.
- The same verbosity settings as the parent can be used.
- The same output coloring mode can be used as the parent process.
- Logging of output is more immediate. Output is normally accumulated and
then printed all at once so it isn't interleaved with everything else.
- Avoids the overhead of running another process. However, in general, this
is a non-issue.
The only disadvantage to doing it this way is that it is more difficult to
implement.