def METHOD_NAME(type_var, ppal_index, index, t, self, node):
    if isinstance(t, TypeVar):
        if t is type_var:
            # FIXME: this is the second part of the hack below,
            # FIXME: there's no reason why self.result[node.args[index]]
            # FIXME: would still be valid in translated context
            return lambda arg: (arg
                                if index == ppal_index
                                else self.result[node.args[index]])
    elif isinstance(t, (List, Set, Iterable, Dict)):
        return lambda arg: self.builder.IteratorContentType(
            METHOD_NAME(type_var,
                        ppal_index,
                        index,
                        t.__args__[0],
                        self, node)(arg))
    assert False, t