Casting added to ProductSemiGroup, etc.