class_docstr: Replace list nodes by tuple nodes when possible
  
  >>> import gast as ast
  >>> from pythran import passmanager, backend
  >>> node = ast.parse("def foo(n): import numpy; return numpy.ones([n,n])")
  >>> pm = passmanager.PassManager("test")
  >>> _, node = pm.apply(ListToTuple, node)
  >>> print(pm.dump(backend.Python, node))
  def foo(n):
      import numpy
      return numpy.ones((n, n))
code: def visit_List(self, node):
      self.generic_visit(node)
      if node in self.fixed_size_list:
          return self.convert(node)
      else:
          return node
  
file_path: catboost/contrib/python/pythran/pythran/optimizations/list_to_tuple.py
imports: from pythran.analyses import Aliases, FixedSizeList
  from pythran.tables import MODULES
  from pythran.passmanager import Transformation
  from pythran.utils import path_to_attr
  import gast
label_desc: Use image node_id 4 for calling the ListToTuple obj's underlying member method code with example usage: obj.visit_List(node) and returns: self, node