code: def set_context(self, expr, ctx):
          
          t = type(expr)
          try:
              # TODO: check if Starred is ok
              if t in (ast.Attribute, ast.Name):
                  if type(ctx) == ast.Store():
                      mis.check_forbidden_name(getattr (expr, expression_name_map[t]), expr)
              elif t in (ast.Subscript, ast.Starred):
                  pass
              elif t in (ast.List, ast.Tuple):
                  for elt in expr.elts:
                      self.set_context(elt, ctx)
              expr.ctx = ctx
          except misc.ForbiddenNameAssignment as e:
              self.error_ast("cannot assign to %s" % (e.name,), e.node)
docs: Set the context of an expression to Store or Del if possible.