code: def testMapFusionLongMapChain(self):
      n = 5
      dataset = dataset_ops.Dataset.range(n)
      dataset = dataset.apply(
          testing.assert_next(["ParallelMap", "MemoryCacheImpl"])
      )
  
      k = 50
      for _ in range(k):
          dataset = dataset.map(
              lambda x: 2 * x,
              num_parallel_calls=dataset_ops.AUTOTUNE,
          )
  
      dataset = dataset.cache()
      options = options_lib.Options()
      options.experimental_optimization.apply_default_optimizations = (
          False
      )
      options.experimental_optimization.map_fusion = True
      dataset = dataset.with_options(options)
  
      self.assertDatasetProduces(
          dataset,
          expected_output=[x * 2**k for x in range(n)],
          assert_items_equal=True,
      )
  
imports: import functools
  from absl.testing import parameterized
  from tensorflow.python.data.experimental.ops import testing
  from tensorflow.python.data.kernel_tests import test_base
  from tensorflow.python.data.ops import dataset_ops
  from tensorflow.python.data.ops import options
  from tensorflow.python.framework import combinations
  from tensorflow.python.framework import constant_op
  from tensorflow.python.framework import dtypes
  from tensorflow.python.framework import errors
  from tensorflow.python.framework import ops
  from tensorflow.python.ops import check_ops
  from tensorflow.python.ops import control_flow_ops
  from tensorflow.python.ops import math_ops
  from tensorflow.python.platform import test
label_desc: Use image node_id 2 for calling the MapFusionTest obj's underlying member method code with example usage: obj.testMapFusionLongMapChain() without return types