code: def _reindent_stats(tokens):
      
      find_stmt = 1  # Next token begins a fresh stmt?
      level = 0  # Current indent level.
      stats = []
  
      for t in tokens:
          token_type = t[0]
          sline = t[2][0]
          line = t[4]
  
          if token_type == tokenize.NEWLINE:
              # A program statement, or ENDMARKER, will eventually follow,
              # after some (possibly empty) run of tokens of the form
              #     (NL | COMMENT)* (INDENT | DEDENT+)?
              find_stmt = 1
  
          elif token_type == tokenize.INDENT:
              find_stmt = 1
              level += 1
  
          elif token_type == tokenize.DEDENT:
              find_stmt = 1
              level -= 1
  
          elif token_type == tokenize.COMMENT:
              if find_stmt:
                  stats.append((sline, -1))
                  # But we're still looking for a new stmt, so leave
                  # find_stmt alone.
  
          elif token_type == tokenize.NL:
              pass
  
          elif find_stmt:
              # This is the first "real token" following a NEWLINE, so it
              # must be the first token of the next program statement, or an
              # ENDMARKER.
              find_stmt = 0
              if line:   # Not endmarker.
                  stats.append((sline, level))
  
      return stats
docs: Return list of (lineno, indentlevel) pairs.
  
      One for each stmt and comment line. indentlevel is -1 for comment
      lines, as a signal that tokenize doesn't know what to do about them;
      indeed, they're our headache!