Well, converting from simple boolean geometry code to Compound boolean geometry code wasn't quite as simple as I first thought. BUT, it wasn't too bad either. Basically, you just have to do the same inside/outside/shared/unshared tagging that you do with simple paths, and apply it to all subpaths as well. There's some fiddly bits about making sure you are inside an odd number of the opposite path set's paths, but it wasn't too bad. The result is shown below: