docs: def get_accessed(node):
      '''Get names, but ignore variables names to the left hand side
      That is to say, in case of
         a = b + 1
      we consider b as "being accessed", while a is not.
      '''
      if isinstance(node, ast.Assign):
          return get_accessed(node.value)
      elif isinstance(node, ast.Name):
          return {node.id}
      names = set()
      if isinstance(node, list):
          for x in node:
              names |= get_accessed(x)
      else:
          for x in ast.iter_child_nodes(node):
              names |= get_accessed(x)
      return names