code: def visit_If(self, node):
          
          currs = (node,)
          raises = ()
  
          # true branch
          for n in node.body:
              self.result.add_node(n)
              for curr in currs:
                  self.result.add_edge(curr, n)
              currs, nraises = self.visit(n)
              raises += nraises
          if is_true_predicate(node.test):
              return currs, raises
  
          # false branch
          tcurrs = currs
          currs = (node,)
          for n in node.orelse:
              self.result.add_node(n)
              for curr in currs:
                  self.result.add_edge(curr, n)
              currs, nraises = self.visit(n)
              raises += nraises
          return tcurrs + currs, raises
docs: OUT = true branch U false branch
          RAISES = true branch U false branch