def METHOD_NAME(
    self,
    configs: List[Config[ModelConfig]],
    performances: List[Performance],
) -> None:
    super().METHOD_NAME(configs, performances)
    # We need to sort by dataset to have the same ordering for each model config
    ordering = np.argsort([c.dataset.name() for c in configs])
    performance_df = Performance.to_dataframe(performances)
    # Extract all metrics
    metric_map = defaultdict(list)
    for i in ordering:
        metric_map[configs[i].model].append(
            performance_df.iloc[i][self.objectives].to_numpy(),  # type: ignore
        )
    # Build the properties
    self.metrics = np.stack(list(metric_map.values()), axis=1)
    self.model_indices = {model: i for i, model in enumerate(metric_map)}
    # If we are in the multi-objective setting, we have to apply dataset-level quantile
    # normalization of each objective. Otherwise, we perform standardization.
    if not self.enforce_single_objective and len(self.objectives) > 1:
        transformer = QuantileTransformer(
            n_quantiles=min(1000, self.metrics.shape[0])
        )
        self.metrics = np.stack(
            [
                transformer.fit_transform(dataset_metrics)
                for dataset_metrics in self.metrics
            ]
        )
    else:
        transformer = StandardScaler()
        self.metrics = np.stack(
            [
                transformer.fit_transform(dataset_metrics)
                for dataset_metrics in self.metrics
            ]
        )