def _find_all_subclasses(cls):
    """ Recursively find all subclasses """
    subclasses = set(cls.__subclasses__())
    for sub in cls.__subclasses__():
        subclasses = subclasses | _find_all_subclasses(sub)
    return subclasses