class_docstr: Base class used for composite model structure definition
  
  Args:
      nodes: :obj:`PipelineNode` object(s)
      use_input_preprocessing: whether to do input preprocessing or not, ``True`` by default.
docstr: Returns pipeline formed from the last node solving the given problem and all its parents
  
  Args:
      task_type: task type of the last node to search for
  
  Returns:
      pipeline formed from the last node solving the given problem and all of its parents
docstr_tok: ["Returns","pipeline","formed","from","the","last","node","solving","the","given","problem","and","all","its","parents","Args",":","task_type",":","task","type","of","the","last","node","to","search","for","Returns",":","pipeline","formed","from","the","last","node","solving","the","given","problem","and","all","of","its","parents"]
code: def pipeline_for_side_task(
      self, task_type: TaskTypesEnum
  ) -> "Pipeline":
      """Returns pipeline formed from the last node solving the given problem and all its parents
  
      Args:
          task_type: task type of the last node to search for
  
      Returns:
          pipeline formed from the last node solving the given problem and all of its parents
      """
  
      max_distance = 0
      side_root_node = None
      for node in self.nodes:
          if (
              task_type in node.operation.acceptable_task_types
              and isinstance(node.operation, Model)
              and distance_to_primary_level(node) >= max_distance
          ):
              side_root_node = node
              max_distance = distance_to_primary_level(node)
  
      pipeline = Pipeline(side_root_node)
      pipeline.preprocessor = self.preprocessor
      return pipeline
  
imports: from copy import deepcopy
  from datetime import timedelta
  from os import PathLike
  from typing import Optional, Tuple, Union, Sequence, List, Dict
  import func_timeout
  from golem.core.dag.graph import Graph
  from golem.core.dag.graph_delegate import GraphDelegate
  from golem.core.dag.graph_node import GraphNode
  from golem.core.dag.graph_utils import distance_to_primary_level, graph_structure
  from golem.core.dag.linked_graph import LinkedGraph
  from golem.core.log import default_log
  from golem.core.optimisers.timer import Timer
  from golem.core.paths import copy_doc
  from golem.utilities.serializable import Serializable
  from golem.visualisation.graph_viz import NodeColorType
  from fedot.core.caching.pipelines_cache import OperationsCache
  from fedot.core.caching.preprocessing_cache import PreprocessingCache
  from fedot.core.data.data import InputData, OutputData
  from fedot.core.data.multi_modal import MultiModalData
  from fedot.core.operations.data_operation import DataOperation
  from fedot.core.operations.model import Model
  from fedot.core.pipelines.node import PipelineNode
  from fedot.core.pipelines.template import PipelineTemplate
  from fedot.core.repository.tasks import TaskTypesEnum
  from fedot.core.visualisation.pipeline_specific_visuals import PipelineVisualizer
  from fedot.preprocessing.dummy_preprocessing import DummyPreprocessor
  from fedot.preprocessing.preprocessing import DataPreprocessor
label_desc: Use image node_id 17 for calling the Pipeline obj's underlying member method code with example usage: obj.pipeline_for_side_task(task_type) and returns: pipeline