class_docstr: A `ScenarioState` represents the output of adaptation.  Contains a set of
  `RequestState` that were created and executed (a `ScenarioState` could be
  pre-execution or post-execution).
code: def __post_init__(self):
      # Create derived indices based on `request_states` so it's easier for
      # the `Metric` later to access them.  Two things are produced:
      self.request_state_map: Dict[
          Tuple[int, Instance, Optional[int]], List[RequestState]
      ] = defaultdict(list)
  
      # Python doesn't support an ordered set, so use an OrderedDict instead to maintain insertion order
      instances_set: Dict[Instance, None] = OrderedDict()
      for request_state in self.request_states:
          instances_set[request_state.instance] = None
          key = (
              request_state.train_trial_index,
              request_state.instance,
              request_state.reference_index,
          )
          self.request_state_map[key].append(request_state)
      self.instances: List[Instance] = list(instances_set.keys())
  
file_path: H2O/h2o_hf/helm/src/helm/benchmark/adaptation/scenario_state.py
imports: from collections import defaultdict, OrderedDict
  from dataclasses import dataclass
  from typing import List, Dict, Tuple, Optional
  from helm.benchmark.scenarios.scenario import Instance
  from .adapter_spec import AdapterSpec
  from .request_state import RequestState
label_desc: Use image node_id 1 for calling the ScenarioState obj's underlying member method code with example usage: obj.__post_init__() without return types