code: def test_multimodal_pipeline_serialized_correctly():
      """
      Checks that MultiModal pipelining together with complex preprocessing
      (gap filling and categorical encoding) is serialized correctly
      """
      save_path = "test_multimodal_pipeline_serialized_correctly"
      mm_data, pipeline = get_single_task_multimodal_tabular_data()
  
      pipeline.fit(mm_data)
      before_save_predicted_labels = pipeline.predict(
          mm_data, output_mode="labels"
      )
      pipeline.save(path=save_path, create_subdir=False)
  
      pipeline_loaded = Pipeline.from_serialized(
          create_correct_path(save_path)
      )
      after_load_predicted_labels = pipeline_loaded.predict(
          mm_data, output_mode="labels"
      )
  
      assert np.array_equal(
          before_save_predicted_labels.predict,
          after_load_predicted_labels.predict,
      )
  
imports: import json
  import os
  import shutil
  import numpy
  import pytest
  from sklearn.metrics import mean_absolute_error
  from fedot import Fedot
  from fedot.core.pipelines.node import PipelineNode
  from fedot.core.pipelines.pipeline import Pipeline
  from fedot.core.pipelines.template import PipelineTemplate, extract_subtree_root
  from fedot.core.repository.tasks import Task, TaskTypesEnum
  from fedot.core.utils import fedot_project_root
  from test.integration.api.test_main_api import get_dataset
  from test.unit.data_operations.test_data_operations_implementations import get_mixed_data
  from test.unit.multimodal.data_generators import get_single_task_multimodal_tabular_data
  from test.unit.pipelines.test_decompose_pipelines import get_classification_data
  from test.unit.preprocessing.test_preprocessing_through_api import data_with_spaces_and_nans_in_features
  from test.unit.tasks.test_forecasting import get_multiscale_pipeline, get_simple_ts_pipeline, get_ts_data
label_desc: Use image node_id 28 for calling a global function with example usage: test_multimodal_pipeline_serialized_correctly() without return types