code: def visit_Module(self, node):
          newbody = list()
          olddef = list()
          for stmt in node.body:
              if isinstance(stmt, ast.FunctionDef):
                  olddef.append(stmt)
              else:
                  newbody.append(stmt)
          try:
              newdef = topological_sort(
                  self.type_dependencies,
                  self.ordered_global_declarations)
              newdef = [f for f in newdef if isinstance(f, ast.FunctionDef)]
          except nx.exception.NetworkXUnfeasible:
              raise PythranSyntaxError("Infinite function recursion")
          assert set(newdef) == set(olddef), "A function have been lost..."
          node.body = newbody + newdef
          self.update = True
          return node