def _AllContaining(self, type_param, seen=None):
    'Gets all type parameters that are in a union with the passed one.'
    seen = (seen or set())
    result = [type_param]
    for other in self.type_param_union[type_param.name]:
        if (other in seen):
            continue
        seen.add(other)
        self._AppendNew(result, (self._AllContaining(other, seen) or [other]))
    return result
Gets all type parameters that are in a union with the passed one.
def _AllContaining(self, type_param, seen=None):
    
    seen = (seen or set())
    result = [type_param]
    for other in self.type_param_union[type_param.name]:
        if (other in seen):
            continue
        seen.add(other)
        self._AppendNew(result, (self._AllContaining(other, seen) or [other]))
    return result