In #3831, I decided to punt on checking whether markers were disjoint before forking the resolver. But we need to do this for correctness. Namely, if we fork because two different dependency specifications reference the same package but their markers are not disjoint, then we could wind up in a situation where two different versions of the same package would be installed according to the lock file. Which, of course, we cannot do. So we can only permit forking when marker expressions are completely disjoint, thus guaranteeing that only one version will be selected at install time.