docs: def NAME(self, node):
          """Handle occurrence of Name (which can be a load/store/delete
          access.)"""
          # Locate the name in locals / function / globals scopes.
          if isinstance(node.ctx, (ast.Load, ast.AugLoad)):
              self.handle_node_load(node)
              if (node.id == 'locals' and isinstance(self.scope, FunctionScope)
                      and isinstance(node.parent, ast.Call)):
                  # we are doing locals() call in current scope
                  self.scope.uses_locals = True
          elif isinstance(node.ctx, (ast.Store, ast.AugStore)):
              self.handle_node_store(node)
          elif isinstance(node.ctx, ast.Del):
              self.handle_node_delete(node)
          else:
              # must be a Param context -- this only happens for names in function
              # arguments, but these aren't dispatched through here
              raise RuntimeError("Got impossible expression context: %r" % (node.ctx,))