class_docstr: Associate each variable declaration with the node that defines it
  
  Whenever possible, associate the variable declaration to an assignment,
  otherwise to a node that defines a bloc (e.g. a For)
  This takes OpenMP information into accounts!
  The result is a dictionary with nodes as key and set of names as values
code: def visit_OMPDirective(self, node):
      for dep in node.deps:
          if dep in node.private_deps:
              continue
          if isinstance(dep, ast.Name):
              self.openmp_deps.setdefault(dep.id, []).append(dep)
  
file_path: catboost/contrib/python/pythran/pythran/analyses/scope.py
imports: from pythran.analyses.ancestors import AncestorsWithBody
  from pythran.analyses.use_def_chain import DefUseChains
  from pythran.passmanager import FunctionAnalysis
  from collections import defaultdict
  import gast
label_desc: Use image node_id 2 for calling the Scope obj's underlying member method code with example usage: obj.visit_OMPDirective(node) without return types