if you run the attached process:
with process variable 'choice' set to 1, it gets executed OK.
If you run it with variable 'choice' set to 2, it fails the error in $subject.
When I was step-by-step debugging this issue, I have noticed that if the first XOR has N outgoing connections to N tasks, then all are included in the internal Constraints hashmap. But if it has M outgoing connections to another gateway (similarly as in this image) then only 1 of these M is added to the constraint map.
The explanation for this behavior from engineering is this:
The problem with this process is that there is not really a diverge in the process flows as both sequence flows point to the same node - in this case join. If you make them distinct (go to other nodes) then all should work just fine.
Since the process, the way it's modeled right now, will always fail during runtime, this construct should be caught during compilation time instead of runtime.