code: def test_reuse_logical_project_with_duplicate_query(self):
      project_query = """SELECT id, HFObjectDetector(data).label FROM DETRAC WHERE id < 10;"""
      batches, exec_times = self._reuse_experiment(
          [project_query, project_query]
      )
      self._verify_reuse_correctness(project_query, batches[1])
      # reuse should be faster than no reuse
      self.assertGreater(exec_times[0], exec_times[1])
  
imports: import gc
  import os
  import unittest
  from pathlib import Path
  from test.markers import gpu_skip_marker, windows_skip_marker
  from test.util import get_evadb_for_testing, get_logical_query_plan, load_functions_for_testing, shutdown_ray
  from mock import patch
  from evadb.configuration.constants import EvaDB_ROOT_DIR
  from evadb.models.storage.batch import Batch
  from evadb.optimizer.operators import LogicalFunctionScan
  from evadb.optimizer.plan_generator import PlanGenerator
  from evadb.optimizer.rules.rules import CacheFunctionExpressionInApply, CacheFunctionExpressionInFilter, CacheFunctionExpressionInProject
  from evadb.optimizer.rules.rules_manager import RulesManager, disable_rules
  from evadb.server.command_handler import execute_query_fetch_all
  from evadb.utils.stats import Timer
label_desc: Use image node_id 11 for calling the ReuseTest obj's underlying member method code with example usage: obj.test_reuse_logical_project_with_duplicate_query() without return types