The names of the product elements
The mirrored *-type
The name of the type
Create a new instance of typeT with elements taken from productp.
T
p