code: def unpack_infer(stmt, context=None):
      
      if isinstance(stmt, (List, Tuple)):
          for elt in stmt.elts:
              if elt is util.Uninferable:
                  yield elt
                  continue
              yield from unpack_infer(elt, context)
          return dict(node=stmt, context=context)
      # if inferred is a final node, return it and stop
      inferred = next(stmt.infer(context))
      if inferred is stmt:
          yield inferred
          return dict(node=stmt, context=context)
      # else, infer recursively, except Uninferable object that should be returned as is
      for inferred in stmt.infer(context):
          if inferred is util.Uninferable:
              yield inferred
          else:
              yield from unpack_infer(inferred, context)
  
      return dict(node=stmt, context=context)
docs: recursively generate nodes inferred by the given statement.
      If the inferred value is a list or a tuple, recurse on the elements