class_docstr: Turns built in method calls into function calls.
  
  >>> import gast as ast
  >>> from pythran import passmanager, backend
  >>> node = ast.parse("[].append(12)")
  >>> pm = passmanager.PassManager("test")
  >>> _, node = pm.apply(NormalizeMethodCalls, node)
  >>> print(pm.dump(backend.Python, node))
  builtins.list.append([], 12)
class_docstr_tok: ["Turns","built","in","method","calls","into","function","calls",".",">",">",">","import","gast","as","ast",">",">",">","from","pythran","import","passmanager",",","backend",">",">",">","node","=","ast.parse","(","``","[","]",".append","(","12",")","''",")",">",">",">","pm","=","passmanager.PassManager","(","``","test","''",")",">",">",">","_",",","node","=","pm.apply","(","NormalizeMethodCalls",",","node",")",">",">",">","print","(","pm.dump","(","backend.Python",",","node",")",")","builtins.list.append","(","[","]",",","12",")"]
docstr: When we normalize call, we need to add correct import for method
  to function transformation.
  
  a.max()
  
  for numpy array will become:
  
  numpy.max(a)
  
  so we have to import numpy.
docstr_tok: ["When","we","normalize","call",",","we","need","to","add","correct","import","for","method","to","function","transformation",".","a.max","(",")","for","numpy","array","will","become",":","numpy.max","(","a",")","so","we","have","to","import","numpy","."]
code: def visit_Module(self, node):
      """
      When we normalize call, we need to add correct import for method
      to function transformation.
  
      a.max()
  
      for numpy array will become:
  
      numpy.max(a)
  
      so we have to import numpy.
      """
      self.skip_functions = True
      self.generic_visit(node)
      self.skip_functions = False
      self.generic_visit(node)
      new_imports = self.to_import - self.globals
      imports = [
          ast.Import(names=[ast.alias(name=mod[17:], asname=mod)])
          for mod in new_imports
      ]
      node.body = imports + node.body
      self.update |= bool(imports)
      return node
  
imports: from pythran.analyses import Globals, Ancestors
  from pythran.passmanager import Transformation
  from pythran.syntax import PythranSyntaxError
  from pythran.tables import attributes, functions, methods, MODULES
  from pythran.tables import duplicated_methods
  from pythran.conversion import mangle, demangle
  from pythran.utils import isstr
  import gast
  from functools import reduce
label_desc: Use image node_id 2 for calling the NormalizeMethodCalls obj's underlying member method code with example usage: obj.visit_Module(node) and returns: node