class_docstr: Specifies the interface any benchmark problem must adhere to.
  
  Subclasses include BenchmarkProblem, SurrogateBenchmarkProblem, and
  MOOSurrogateBenchmarkProblem.
code: def runner(self) -> Runner:
      pass
  
imports: import abc
  from typing import Any, Dict, List, Optional, Protocol, runtime_checkable, Type
  from ax.core.metric import Metric
  from ax.core.objective import MultiObjective, Objective
  from ax.core.optimization_config import MultiObjectiveOptimizationConfig, ObjectiveThreshold, OptimizationConfig
  from ax.core.outcome_constraint import OutcomeConstraint
  from ax.core.parameter import ParameterType, RangeParameter
  from ax.core.runner import Runner
  from ax.core.search_space import SearchSpace
  from ax.core.types import ComparisonOp
  from ax.metrics.botorch_test_problem import BotorchTestProblemMetric
  from ax.runners.botorch_test_problem import BotorchTestProblemRunner
  from ax.utils.common.base import Base
  from ax.utils.common.typeutils import checked_cast
  from botorch.test_functions.base import BaseTestProblem, ConstrainedBaseTestProblem
  from botorch.test_functions.multi_objective import MultiObjectiveTestProblem
  from botorch.test_functions.synthetic import SyntheticTestFunction
label_desc: Use image node_id 1 for calling the BenchmarkProblemBase obj's underlying member method code with example usage: obj.runner() without return types