@classmethod<EOL><INDENT>def subclasses(cls):<DEDENT>
seen = set()<EOL>queue = set([cls])<EOL>while queue:<EOL><INDENT>c = queue.pop()<EOL>seen.add(c)<EOL>sc = c.__subclasses__()<EOL>for c in sc:<EOL><INDENT>if c not in seen:<EOL><INDENT>queue.add(c)<EOL><DEDENT><DEDENT><DEDENT>seen.remove(cls)<EOL>return seen<EOL>
Return a set of all Ent subclasses, recursively.