code: def visit_For(self, node):
          
          currs = (node,)
          break_currs = tuple()
          raises = ()
          # handle body
          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)
              for nraise in nraises:
                  if isinstance(nraise, ast.Break):
                      break_currs += (nraise,)
                  elif isinstance(nraise, ast.Continue):
                      self.result.add_edge(nraise, node)
                  else:
                      raises += (nraise,)
          # add the backward loop
          for curr in currs:
              self.result.add_edge(curr, node)
          # the else statement if needed
          if node.orelse:
              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)
          # while only
          if hasattr(node, 'test') and is_true_predicate(node.test):
              return break_currs, raises
  
          return break_currs + currs, raises
docs: OUT = (node,) + last body statements
          RAISES = body's that are not break or continue