code: def find_globals_and_nonlocals(node, globs, nonlocals, code, version):
      
      for n in node:
          if isinstance(n, SyntaxTree):
              globs, nonlocals = find_globals_and_nonlocals(n, globs, nonlocals,
                                                            code, version)
          elif n.kind in read_global_ops:
              globs.add(n.pattr)
          elif (version >= 3.0
                and n.kind in nonglobal_ops
                and n.pattr in code.co_freevars
                and n.pattr != code.co_name
                and code.co_name != '<lambda>'):
              nonlocals.add(n.pattr)
      return globs, nonlocals
docs: search a node of parse tree to find variable names that need a
      either 'global' or 'nonlocal' statements added.