@classmethod
def least_ancestor(cls, target_types):
    """Find this type's least ancestor among target_types

        This method helps a data consumer find the least common ancestor of
        this type among the types the data consumer supports.

        :param supported_types: iterable collection of types
        :returns: the subclass of CongressDataType which is the least ancestor
        """
    target_types = frozenset(target_types)
    current_class = cls
    try:
        while current_class not in target_types:
            current_class = current_class._get_parent()
        return current_class
    except cls.CongressDataTypeNoParent:
        return None
