def combine_type(observations):
    """Combines a list of types into one.
    Basically these are combined into a Union with some
    additional unification effort (e.g. can apply PEP 484 style numeric tower).
    """
    assert len(observations) > 0
    if len(observations) == 1:
        return observations[0]
    else:
        if simplify:
            simplify_for_Union(observations)
        return Union[tuple(observations)]
Combines a list of types into one.
    Basically these are combined into a Union with some
    additional unification effort (e.g. can apply PEP 484 style numeric tower).