code: def _structure_tuple(self, obj, tup):
          
          tup_params = tup.__args__
          has_ellipsis = tup_params and tup_params[-1] is Ellipsis
          if tup_params is None or (has_ellipsis and tup_params[0] is Any):
              # Just a Tuple. (No generic information.)
              return tuple(obj)
          if has_ellipsis:
              # We're dealing with a homogenous tuple, Tuple[int, ...]
              tup_type = tup_params[0]
              conv = self._structure_func.dispatch(tup_type)
              return tuple(conv(e, tup_type) for e in obj)
          else:
              # We're dealing with a heterogenous tuple.
              return tuple(
                  self._structure_func.dispatch(t)(e, t)
                  for t, e in zip(tup_params, obj)
              )
docs: Deal with converting to a tuple.