class_docstr: Replaces expressions by iterators when possible.
  
  >>> import gast as ast
  >>> from pythran import passmanager, backend
  >>> node = ast.parse('''
  ... def foo(l):
  ...     return builtins.sum(l)
  ... def bar(n):
  ...     return foo(builtins.list(n))
  ... ''')
  >>> pm = passmanager.PassManager("test")
  >>> _, node = pm.apply(IterTransformation, node)
  >>> print(pm.dump(backend.Python, node))
  def foo(l):
      return builtins.sum(l)
  def bar(n):
      return foo(n)
docstr: Replace function call by its correct iterator if it is possible.
docstr_tok: ["Replace","function","call","by","its","correct","iterator","if","it","is","possible","."]
code: def visit_Call(self, node):
      """Replace function call by its correct iterator if it is possible."""
      if node in self.potential_iterator:
          matched_path = self.find_matching_builtin(node)
          if matched_path is None:
              return self.generic_visit(node)
  
          # if any kind of specific (~ with more arg) behavior is required
          if len(node.args) != 1:
              return self.generic_visit(node)
  
          path = EQUIVALENT_ITERATORS[matched_path]
          if path:
              node.func = path_to_attr(path)
          else:
              node = node.args[0]
  
          self.update = True
      return self.generic_visit(node)
  
file_path: pythran/pythran/optimizations/iter_transformation.py
imports: from pythran.analyses import PotentialIterator, Aliases
  from pythran.passmanager import Transformation
  from pythran.utils import path_to_attr, path_to_node
label_desc: Use image node_id 3 for calling the IterTransformation obj's underlying member method code with example usage: obj.visit_Call(node) and returns: self, self, self