docs: def parse_comment_node(comment):
      # Example of a comment node. The resign threshold line appears only
      # for the first move in the game; it gets preprocessed by extract_game_data
      """
      Resign Threshold: -0.88
      -0.0662
      D4 (100) ==> D16 (14) ==> Q16 (3) ==> Q4 (1) ==> Q: -0.07149
      move: action Q U P P-Dir N soft-N p-delta p-rel
      D4 : -0.028, -0.048, 0.020, 0.048, 0.064, 100 0.1096 0.06127 1.27
      D16 : -0.024, -0.043, 0.019, 0.044, 0.059, 96 0.1053 0.06135 1.40
      """
  
      lines = comment.split('\n')
      if lines[0].startswith('Resign'):
          lines = lines[1:]
  
      post_Q = float(lines[0])
      debug_rows = []
      comment_splitter = re.compile(r'[ :,]')
      for line in lines[3:]:
          if not line:
              continue
          columns = comment_splitter.split(line)
          columns = list(filter(bool, columns))
          coord, *other_columns = columns
          coord = coords.to_flat(coords.from_gtp(coord))
          debug_rows.append(DebugRow(coord, *map(float, other_columns)))
          if FLAGS.only_top_move:
              break
      return post_Q, debug_rows