class_docstr: Turns all list comprehension from a node into new function calls.
  
  >>> import gast as ast
  >>> from pythran import passmanager, backend
  >>> node = ast.parse("[x*x for x in (1,2,3)]")
  >>> pm = passmanager.PassManager("test")
  >>> _, node = pm.apply(RemoveComprehension, node)
  >>> print(pm.dump(backend.Python, node))
  list_comprehension0()
  def list_comprehension0():
      __target = builtins.list()
      for x in (1, 2, 3):
          builtins.list.append(__target, (x * x))
      return __target
code: def visit_GeneratorExp(self, node):
      self.update = True
      node.elt = self.visit(node.elt)
      name = "generator_expression{0}".format(self.count)
      self.count += 1
      args = self.gather(ImportedIds, node)
      self.count_iter = 0
  
      body = reduce(
          self.nest_reducer,
          reversed(node.generators),
          ast.Expr(ast.Yield(node.elt)),
      )
  
      sargs = [ast.Name(arg, ast.Param(), None, None) for arg in args]
      fd = ast.FunctionDef(
          name,
          ast.arguments(sargs, [], None, [], [], None, []),
          [body],
          [],
          None,
          None,
      )
      metadata.add(fd, metadata.Local())
      self.ctx.module.body.append(fd)
      return ast.Call(
          ast.Name(name, ast.Load(), None, None),
          [ast.Name(arg.id, ast.Load(), None, None) for arg in sargs],
          [],
      )
  
file_path: catboost/contrib/python/pythran/pythran/transformations/remove_comprehension.py
imports: from pythran.analyses import ImportedIds
  from pythran.passmanager import Transformation
  from pythran.conversion import mangle
  import pythran.metadata
  import gast
  from functools import reduce
label_desc: Use image node_id 8 for calling the RemoveComprehension obj's underlying member method code with example usage: obj.visit_GeneratorExp(node) and returns: ast