Properly support nested products
Support full pattern syntax in product definitions