nodes: 0, module; 1, function_definition; 2, function_name:is_jump_forward; 3, parameters; 4, block; 5, identifier:self; 6, identifier:offset; 7, expression_statement; 8, expression_statement; 9, if_statement; 10, if_statement; 11, return_statement; 12, comment:"""
          Return True if the code at offset is some sort of jump forward.
          That is, it is ether "JUMP_FORWARD" or an absolute jump that
          goes forward.
          """; 13, assignment; 14, comparison_operator:opname == 'JUMP_FORWARD'; 15, block; 16, comparison_operator:opname != 'JUMP_ABSOLUTE'; 17, block; 18, comparison_operator:offset < self.get_target(offset); 19, identifier:opname; 20, attribute; 21, identifier:opname; 22, string; 23, return_statement; 24, identifier:opname; 25, string; 26, return_statement; 27, identifier:offset; 28, call; 29, call; 30, identifier:opname; 31, string_content:JUMP_FORWARD; 32, True; 33, string_content:JUMP_ABSOLUTE; 34, False; 35, attribute; 36, argument_list; 37, attribute; 38, argument_list; 39, identifier:self; 40, identifier:get_target; 41, identifier:offset; 42, identifier:self; 43, identifier:get_inst; 44, identifier:offset
code: def is_jump_forward(self, offset):
          """
          Return True if the code at offset is some sort of jump forward.
          That is, it is ether "JUMP_FORWARD" or an absolute jump that
          goes forward.
          """
          opname = self.get_inst(offset).opname
          if opname == 'JUMP_FORWARD':
              return True
          if opname != 'JUMP_ABSOLUTE':
              return False
          return offset < self.get_target(offset)