code: def visitCall(self, node):
      left = self.visit(node.func)
  
      right = set()
      for attr in ("args", "keywords"):
          for child in getattr(node, attr):
              if child:
                  right.update(self.visit(child))
  
      for attr in ("starargs", "kwargs"):
          child = getattr(node, attr)
          if child:
              right.update(self.visit(child))
  
      for src in left | right:
          if not self.graph.has_node(src):
              self.undefined.add(src)
  
      if self.call_deps:
          add_edges(self.graph, left, right)
          add_edges(self.graph, right, left)
  
      right.update(left)
      return right
  
imports: from __future__ import print_function
  from __future__ import division
  from __future__ import absolute_import
  from ...asttools import Visitor, visit_children
  import _ast
  from ...asttools.visitors.symbol_visitor import get_symbols
label_desc: Use image node_id 4 for calling the CollectNodes obj's underlying member method code with example usage: obj.visitCall(node) and returns: right