code: def test_rai_insights_add_save_load_save(
      self, manager_type, adult_data
  ):
      (
          data_train,
          data_test,
          y_train,
          y_test,
          categorical_features,
          continuous_features,
          target_name,
          classes,
          feature_columns,
          feature_range_keys,
      ) = adult_data
      X_train = data_train.drop([target_name], axis=1)
  
      model = create_complex_classification_pipeline(
          X_train, y_train, continuous_features, categorical_features
      )
  
      # Cut down size for counterfactuals, in the interests of speed
      if manager_type == ManagerNames.COUNTERFACTUAL:
          data_test = data_test[0:1]
  
      rai_insights = RAIInsights(
          model,
          data_train,
          data_test,
          target_name,
          categorical_features=categorical_features,
          task_type=ModelTask.CLASSIFICATION,
          feature_metadata=FeatureMetadata(identity_feature_name="age"),
      )
  
      # Call a single manager
      if manager_type == ManagerNames.CAUSAL:
          rai_insights.causal.add(
              treatment_features=["age", "hours_per_week"]
          )
      elif manager_type == ManagerNames.COUNTERFACTUAL:
          rai_insights.counterfactual.add(
              total_CFs=10,
              desired_class="opposite",
              feature_importance=False,
          )
      elif manager_type == ManagerNames.DATA_BALANCE:
          rai_insights._data_balance_manager.add(
              cols_of_interest=categorical_features
          )
      elif manager_type == ManagerNames.ERROR_ANALYSIS:
          rai_insights.error_analysis.add()
      else:
          rai_insights.explainer.add()
  
      rai_insights.compute()
  
      with TemporaryDirectory() as tmpdir:
          save_1 = Path(tmpdir) / "first_save"
          save_2 = Path(tmpdir) / "second_save"
  
          # Save it
          rai_insights.save(save_1)
  
          # Load
          rai_2 = RAIInsights.load(save_1)
  
          # Validate, but this isn't the main check
          validate_rai_insights(
              rai_2,
              data_train,
              data_test,
              target_name,
              ModelTask.CLASSIFICATION,
              categorical_features=categorical_features,
              feature_range_keys=feature_range_keys,
              feature_columns=feature_columns,
              feature_metadata=FeatureMetadata(
                  identity_feature_name="age"
              ),
          )
  
          # Save again (this is where Issue #1081 manifested)
          rai_2.save(save_2)
  
imports: import os
  from pathlib import Path
  from tempfile import TemporaryDirectory
  import numpy
  import pandas
  import pytest
  from tests.common_utils import ADULT_CATEGORICAL_FEATURES_AFTER_DROP, ADULT_DROPPED_FEATURES, create_iris_data
  from rai_test_utils.datasets.tabular import create_binary_classification_dataset
  from rai_test_utils.models.lightgbm import create_lightgbm_classifier
  from rai_test_utils.models.sklearn import create_complex_classification_pipeline
  from raiutils.models import ModelTask
  from responsibleai import RAIInsights
  from responsibleai._internal.constants import ManagerNames, SerializationAttributes
  from responsibleai.feature_metadata import FeatureMetadata
label_desc: Use image node_id 5 for calling the TestRAIInsightsSaveAndLoadScenarios obj's underlying member method code with example usage: obj.test_rai_insights_add_save_load_save(manager_type, adult_data) without return types