code: def test_visitor(self):
      dataset_sorted = SqlIndexDataset(
          sqlite_metadata_file=METADATA_FILE,
          remove_empty_masks=False,
          frame_data_builder_FrameDataBuilder_args=NO_BLOBS_KWARGS,
      )
  
      sequences = dataset_sorted.sequence_names()
      i = 0
      for seq in sequences:
          last_ts = float("-Inf")
          for ts, _, idx in dataset_sorted.sequence_frames_in_order(
              seq
          ):
              self.assertEqual(i, idx)
              i += 1
              self.assertGreaterEqual(ts, last_ts)
              last_ts = ts
  
      # test legacy visitor
      old_indices = None
      for seq in sequences:
          last_ts = float("-Inf")
          rows = dataset_sorted._index.index.get_loc(seq)
          indices = list(
              range(rows.start or 0, rows.stop, rows.step or 1)
          )
          fn_ts_list = dataset_sorted.get_frame_numbers_and_timestamps(
              indices
          )
          self.assertEqual(len(fn_ts_list), len(indices))
  
          if old_indices:
              # check raising if we ask for multiple sequences
              with self.assertRaises(ValueError):
                  dataset_sorted.get_frame_numbers_and_timestamps(
                      indices + old_indices
                  )
  
          old_indices = indices
  
imports: import logging
  import os
  import unittest
  from collections import Counter
  import pkg_resources
  import torch
  from pytorch3d.implicitron.dataset.sql_dataset import SqlIndexDataset
label_desc: Use image node_id 16 for calling the TestSqlDataset obj's underlying member method code with example usage: obj.test_visitor() without return types