def list_formats(self, node, path=(), formats=None):
        if formats == None:
            formats = []
        for child in node.children:
            self.list_formats(child, path + (child.name,), formats)
        path and formats.append(".".join(path))
        return sorted(formats)