code: def visitIf(self, node):
      rhs_symbols = get_symbols(node.test, ast.Load)
      self.update_stable_rhs(rhs_symbols)
  
      gen = ConditionalSymbolVisitor()
      for stmnt in node.body:
          gen.visit(stmnt)
  
      if gen.seen_break:
          self.seen_break = True
  
      self.update_cond_lhs(gen._cond_lhs)
      self.update_cond_rhs(gen._cond_rhs)
  
      outputs = gen.stable_lhs
      inputs = gen.stable_rhs
  
      gen = ConditionalSymbolVisitor()
      for stmnt in node.orelse:
          gen.visit(stmnt)
  
      self.update_cond_lhs(gen._cond_lhs)
      self.update_cond_rhs(gen._cond_rhs)
  
      orelse_outputs = gen.stable_lhs
      orelse_inputs = gen.stable_rhs
  
      self.update_stable_lhs(outputs.intersection(orelse_outputs))
      self.update_stable_rhs(inputs.intersection(orelse_inputs))
  
      self.update_cond_lhs(outputs.symmetric_difference(orelse_outputs))
      self.update_cond_rhs(inputs.symmetric_difference(orelse_inputs))
  
imports: from __future__ import print_function
  from __future__ import division
  from __future__ import absolute_import
  from ..visitors import Visitor, visit_children
  from ..visitors.symbol_visitor import get_symbols
  import ast
  from ...utils import py2op
label_desc: Use image node_id 22 for calling the ConditionalSymbolVisitor obj's underlying member method code with example usage: obj.visitIf(node) without return types