I'm not entirely sure why we need to break out to `innerTryStartChild` - why not just provide two distinct function heads at the top level? I'm not convinced the indirection buys us anything here, and whilst there are already a lot of auxiliary functions attached to `tryStartChild`, my personal preference would be to either have dual heads or case/match at top level.

I'm open to discussion on that one though.