Args:
        c: any object
        cls: a class or a list/tuple of classes
    Returns: True if c is a non-empty collection of objects, each of which
        is an instance of one of the specified classes.

def is_instance_collection(c, cls):
    """
    Args:
        c: any object
        cls: a class or a list/tuple of classes
    Returns: True if c is a non-empty collection of objects, each of which
        is an instance of one of the specified classes.
    """
    if not (hasattr(c, '__iter__') and len(c) > 0):
        # make sure it's iterable and not empty
        return False

    cls = make_list(cls)
    for i in get_collection_values(c):
        instance = False
        for cl in cls:
            if isinstance(i, cl):
                instance = True
                break
        if not instance:
            return False

    return True