code: def test_detect_async_calls(self, threshold, expected_result):
      observed_timestamp_ms = -1
  
      def check_result(
          result: _DetectionResult,
          output_image: _Image,
          timestamp_ms: int,
      ):
          self.assertEqual(result, expected_result)
          self.assertTrue(
              np.array_equal(
                  output_image.numpy_view(),
                  self.test_image.numpy_view(),
              )
          )
          self.assertLess(observed_timestamp_ms, timestamp_ms)
          self.observed_timestamp_ms = timestamp_ms
  
      options = _ObjectDetectorOptions(
          base_options=_BaseOptions(model_asset_path=self.model_path),
          running_mode=_RUNNING_MODE.LIVE_STREAM,
          max_results=4,
          score_threshold=threshold,
          result_callback=check_result,
      )
      detector = _ObjectDetector.create_from_options(options)
      for timestamp in range(0, 300, 30):
          detector.detect_async(self.test_image, timestamp)
      detector.close()
  
imports: import enum
  import os
  from unittest import mock
  from absl.testing import absltest
  from absl.testing import parameterized
  import numpy
  from mediapipe.python._framework_bindings import image
  from mediapipe.tasks.python.components.containers import bounding_box
  from mediapipe.tasks.python.components.containers import category
  from mediapipe.tasks.python.components.containers import detections
  from mediapipe.tasks.python.core import base_options
  from mediapipe.tasks.python.test import test_utils
  from mediapipe.tasks.python.vision import object_detector
  from mediapipe.tasks.python.vision.core import image_processing_options
  from mediapipe.tasks.python.vision.core import vision_task_running_mode
label_desc: Use image node_id 26 for calling the ObjectDetectorTest obj's underlying member method code with example usage: obj.test_detect_async_calls(threshold, expected_result) without return types