def find_children_by_type(component, target_type):
    """Recursively find all children of the component and it's decendents by type.

    :param component: Component instance to start seach from
    :type component: class instance
    :param target_type: class  to match with instances
    :type target_type: class
    :return: All instances of type 'target_type' that are descendents of 'component'
    :rtype: list
    """
    results = []
    try:
        for c in component.children:
            if isinstance(c, target_type):
                results.append(c)
            results += find_children_by_type(c, target_type)
    except AttributeError:
        pass
        # No children

    return results