code: def to_source(node, indent_with=' ' * 4, add_line_information=False,
                pretty_string=pretty_string, pretty_source=pretty_source):
      
      generator = SourceGenerator(indent_with, add_line_information,
                                  pretty_string)
      generator.visit(node)
      generator.result.append('\n')
      if set(generator.result[0]) == set('\n'):
          generator.result[0] = ''
      return pretty_source(generator.result)
docs: This function can convert a node tree back into python sourcecode.
      This is useful for debugging purposes, especially if you're dealing with
      custom asts not generated by python itself.
  
      It could be that the sourcecode is evaluable when the AST itself is not
      compilable / evaluable.  The reason for this is that the AST contains some
      more data than regular sourcecode does, which is dropped during
      conversion.
  
      Each level of indentation is replaced with `indent_with`.  Per default this
      parameter is equal to four spaces as suggested by PEP 8, but it might be
      adjusted to match the application's styleguide.
  
      If `add_line_information` is set to `True` comments for the line numbers
      of the nodes are added to the output.  This can be used to spot wrong line
      number information of statement nodes.