docs: def tabulate_body(
      obj,
      level_keys,
      v_level_indexes,
      h_level_indexes,
      v_level_sort_keys=None,
      h_level_sort_keys=None,
  ):
      """
      Args:
          v_level_indexes: A sequence of level indexes.
          h_level_indexes: A sequence of level indexes.
      """
      v_key_sorted = make_sorter(v_level_sort_keys, v_level_indexes)
      h_key_sorted = make_sorter(h_level_sort_keys, h_level_indexes)
  
      h_level_keys = [level_keys[level] for level in h_level_indexes]
      v_level_keys = [level_keys[level] for level in v_level_indexes]
  
      h_key_tuples = h_key_sorted(product(*h_level_keys))
      v_key_tuples = v_key_sorted(product(*v_level_keys))
  
      h_size = len(h_key_tuples)
      v_size = len(v_key_tuples)
  
      table = [[MISSING for _ in range(h_size)] for _ in range(v_size)]
  
      for h_index, h_keys in enumerate(h_key_tuples):
          for v_index, v_keys in enumerate(v_key_tuples):
              key_path = [None] * len(level_keys)
              merge_into_by_index(key_path, h_level_indexes, h_keys)
              merge_into_by_index(key_path, v_level_indexes, v_keys)
              for v_level, v_key in zip(v_level_indexes, v_keys):
                  key_path[v_level] = v_key
  
              item = obj
              for key in key_path:
                  try:
                      item = item[key]
                  except (IndexError, KeyError):
                      break
              else:  # no-break
                  table[v_index][h_index] = item
  
      return table, v_key_tuples, h_key_tuples