code: def get_tileable_to_subtasks(
      self,
  ) -> Dict[TileableType, List[Subtask]]:
      tile_context = self.tile_context
      result = dict()
      for (
          tileable,
          infos,
      ) in tile_context.get_tileable_tile_infos().items():
          subtasks = []
          for info in infos:
              chunks = [
                  c
                  for c in info.generated_chunks
                  if not isinstance(c.op, Fetch)
              ]
              subtasks.extend(self.get_subtasks(chunks))
          result[tileable] = subtasks
      return result
  
imports: import asyncio
  import logging
  import os
  import tempfile
  import time
  from typing import Dict, Iterator, Optional, List, Set
  from ....core import ChunkGraph, TileableGraph, Chunk, TileContext
  from ....core.operand import Fetch
  from ....metrics import Metrics
  from ....optimization.logical import OptimizationRecords
  from ....oscar.profiling import ProfilingData, MARS_ENABLE_PROFILING
  from ....typing import TileableType, ChunkType
  from ....utils import Timer
  from ...subtask import SubtaskResult, Subtask
  from ..core import Task, TaskResult, TaskStatus, new_task_id, MapReduceInfo
  from ..execution.api import TaskExecutor, ExecutionChunkResult
  from .preprocessor import TaskPreprocessor
label_desc: Use image node_id 9 for calling the TaskProcessor obj's underlying member method code with example usage: obj.get_tileable_to_subtasks() and returns: result