Recursive type union

You could make a new type, parametrised by the actual type of the hierarchy of tuples, and then dispatch on the base type.