Enables the switch on 2 different variants

So that the following use-case works:

void test(variant<X, Y, Z> vx, variant<M, N> vm)
{
    var<X> x; var<Y> y; var<Z> z;
    var<M> m; var<N> n;

    Match(vx, vm)
    {
        Case(C<X>(x), C<M>(m)) use(x, m);
        Case(C<Y>(y), C<M>(m)) use(y, m);
        // etc.
    }
    EndMatch
}