def _get_union_type_name(type_names_to_union):
    """Construct a unique union type name based on the type names being unioned."""
    if not type_names_to_union:
        raise AssertionError(
            "Expected a non-empty list of type names to union, received: "
            "{}".format(type_names_to_union)
        )
    return "Union__" + "__".join(sorted(type_names_to_union))