'Compute an intersection of sets, interpreting None as the
Universe set.
This makes __init__ a bit more elegant.
Arguments:
sets (list[set or None]), where None represents the Universe
set.
Returns:
set or None, where None represents the Universe set.'

@staticmethod
def _intersection(*sets):

    non_universe_sets = [set_ for set_ in sets if (set_ is not None)]
    if non_universe_sets:
        (first, rest) = (non_universe_sets[0], non_universe_sets[1:])
        return first.intersection(*rest)
    else:
        return None
