Btw. I've just scanned over your code again and noticed that this is
basically exactly the same as you are doing, just without the Variants
and written in a different order.