public function leaveConcurrent(VirtualExecution $execution, ?Node $node = null, ?array $transitions = null): VirtualExecution
    {
        $root = $execution->getScope();
        $parent = $root->getParentExecution();
        
        $exec = $parent->createExecution(true);
        $exec->setNode(($node === null) ? $execution->getNode() : $node);
        
        $root->setConcurrent(true);
        
        $this->createEventSubscriptions($root, $this->activityId, $execution->getProcessModel()->findNode($this->activityId));
        
        $exec->takeAll($transitions);
        
        return $exec;
    }