code: 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)