code: def save(additional_metrics, ml_task, model_desc, model_path):
      try:
          fold_cnt, repeat_cnt = get_fold_repeat_cnt(model_path)
          if ml_task == BINARY_CLASSIFICATION:
              AdditionalMetrics.save_binary_classification(
                  additional_metrics,
                  model_desc,
                  model_path,
                  fold_cnt,
                  repeat_cnt,
              )
          elif ml_task == MULTICLASS_CLASSIFICATION:
              AdditionalMetrics.save_multiclass_classification(
                  additional_metrics,
                  model_desc,
                  model_path,
                  fold_cnt,
                  repeat_cnt,
              )
          elif ml_task == REGRESSION:
              AdditionalMetrics.save_regression(
                  additional_metrics,
                  model_desc,
                  model_path,
                  fold_cnt,
                  repeat_cnt,
              )
      except Exception as e:
          logger.exception(
              f"Exception while saving additional metrics. {str(e)}\nContinuing ..."
          )
  
imports: import copy
  import json
  import logging
  import os
  import time
  import uuid
  import warnings
  import numpy
  import pandas
  from sklearn.metrics import accuracy_score, classification_report, confusion_matrix, f1_score, matthews_corrcoef, mean_absolute_error, mean_absolute_percentage_error, mean_squared_error, precision_score, r2_score, recall_score, roc_auc_score
  from supervised.algorithms.registry import BINARY_CLASSIFICATION, MULTICLASS_CLASSIFICATION, REGRESSION
  from supervised.utils.metric import logloss
  from supervised.utils.config import LOG_LEVEL
  from tabulate import tabulate
  from supervised.fairness.metrics import FairnessMetrics
  from supervised.fairness.report import FairnessReport
  from supervised.fairness.utils import accuracy, false_negative_rate, false_positive_rate, selection_rate, true_negative_rate, true_positive_rate
  from supervised.utils.additional_plots import AdditionalPlots
  from supervised.utils.common import construct_learner_name, get_fold_repeat_cnt
  from supervised.utils.learning_curves import LearningCurves
  from supervised.utils.jsonencoder import MLJSONEncoder
label_desc: Use image node_id 5 for calling the AdditionalMetrics obj's underlying member method code with example usage: obj.save(additional_metrics, ml_task, model_desc, model_path) without return types