explain recursion on product types better, fix #311