class_docstr: Remove implicit tuple -> variable conversion.
  
  >>> import gast as ast
  >>> from pythran import passmanager, backend
  >>> node = ast.parse("def foo(): a=(1,2.) ; i,j = a")
  >>> pm = passmanager.PassManager("test")
  >>> _, node = pm.apply(NormalizeTuples, node)
  >>> print(pm.dump(backend.Python, node))
  def foo():
      a = (1, 2.0)
      i = a[0]
      j = a[1]
code: def visit_Assign(self, node):
      self.generic_visit(node)
      # if the rhs is an identifier, we don't need to duplicate it
      # otherwise, better duplicate it...
      no_tmp = isinstance(node.value, (ast.Name, ast.Attribute))
      extra_assign = [] if no_tmp else [node]
      for i, t in enumerate(node.targets):
          if isinstance(t, ast.Tuple) or isinstance(t, ast.List):
              renamings = OrderedDict()
              self.traverse_tuples(t, (), renamings)
              if renamings:
                  if no_tmp:
                      gstore = deepcopy(node.value)
                  else:
                      gstore = ast.Name(
                          self.get_new_id(), ast.Store(), None, None
                      )
                  gload = deepcopy(gstore)
                  gload.ctx = ast.Load()
                  node.targets[i] = gstore
                  for rename, state in renamings.items():
                      nnode = reduce(
                          lambda x, y: ast.Subscript(
                              x, ast.Constant(y, None), ast.Load()
                          ),
                          state,
                          gload,
                      )
                      if isinstance(rename, str):
                          extra_assign.append(
                              ast.Assign(
                                  [
                                      ast.Name(
                                          rename,
                                          ast.Store(),
                                          None,
                                          None,
                                      )
                                  ],
                                  nnode,
                                  None,
                              )
                          )
                      else:
                          extra_assign.append(
                              ast.Assign([rename], nnode, None)
                          )
      return extra_assign or node
  
imports: from pythran.analyses import Identifiers
  from pythran.passmanager import Transformation
  import gast
  from functools import reduce
  from collections import OrderedDict
  from copy import deepcopy
label_desc: Use image node_id 11 for calling the NormalizeTuples obj's underlying member method code with example usage: obj.visit_Assign(node) and returns: unknown