Hi Luke,
I think you are moving in the right direction. If creating a single tree proves too cumbersome an alternative could be adding an overload that accepts an IEnumerable of CommandTree instead of just one CommmandTree.
It's good to see you are making progress.
Thanks,
Andriy