code: def test_with_classes_timeline(self):
      train_exps = []
  
      tensor_x = torch.rand(200, 3, 28, 28)
      tensor_y = torch.randint(0, 70, (200,))
      tensor_t = torch.randint(0, 5, (200,))
      train_exps.append(
          _make_taskaware_tensor_classification_dataset(
              tensor_x, tensor_y, task_labels=tensor_t
          )
      )
  
      tensor_x = torch.rand(200, 3, 28, 28)
      tensor_y = torch.randint(0, 100, (200,))
      tensor_t = torch.randint(0, 5, (200,))
      train_exps.append(
          _make_taskaware_tensor_classification_dataset(
              tensor_x, tensor_y, task_labels=tensor_t
          )
      )
  
      test_exps = []
      test_x = torch.rand(200, 3, 28, 28)
      test_y = torch.randint(100, 200, (200,))
      test_t = torch.randint(0, 5, (200,))
      test_exps.append(
          _make_taskaware_tensor_classification_dataset(
              test_x, test_y, task_labels=test_t
          )
      )
  
      other_stream_exps = []
      other_x = torch.rand(200, 3, 28, 28)
      other_y = torch.randint(400, 600, (200,))
      other_t = torch.randint(0, 5, (200,))
      other_stream_exps.append(
          _make_taskaware_tensor_classification_dataset(
              other_x, other_y, task_labels=other_t
          )
      )
  
      bm = benchmark_from_datasets(
          train=train_exps, test=test_exps, other=other_stream_exps
      )
      bm = with_classes_timeline(bm)
  
      train_0_classes = bm.train_stream[0].classes_in_this_experience
      train_1_classes = bm.train_stream[1].classes_in_this_experience
      self._assert_is_unique_and_int(
          bm.train_stream[0].classes_in_this_experience
      )
      self._assert_is_unique_and_int(
          bm.train_stream[1].classes_in_this_experience
      )
  
      train_0_classes_min = min(train_0_classes)
      train_1_classes_min = min(train_1_classes)
      train_0_classes_max = max(train_0_classes)
      train_1_classes_max = max(train_1_classes)
      self.assertGreaterEqual(train_0_classes_min, 0)
      self.assertLess(train_0_classes_max, 70)
      self.assertGreaterEqual(train_1_classes_min, 0)
      self.assertLess(train_1_classes_max, 100)
  
      test_0_classes = bm.test_stream[0].classes_in_this_experience
      self._assert_is_unique_and_int(
          bm.test_stream[0].classes_in_this_experience
      )
  
      test_0_classes_min = min(test_0_classes)
      test_0_classes_max = max(test_0_classes)
      self.assertGreaterEqual(test_0_classes_min, 100)
      self.assertLess(test_0_classes_max, 200)
  
      other_0_classes = bm.other_stream[0].classes_in_this_experience
      self._assert_is_unique_and_int(
          bm.other_stream[0].classes_in_this_experience
      )
  
      other_0_classes_min = min(other_0_classes)
      other_0_classes_max = max(other_0_classes)
      self.assertGreaterEqual(other_0_classes_min, 400)
      self.assertLess(other_0_classes_max, 600)
  
file_path: avalanche/tests/benchmarks/scenarios/test_experience_decorators.py
imports: import unittest
  import torch
  from avalanche.benchmarks import benchmark_from_datasets, EagerCLStream, CLScenario
  from avalanche.benchmarks import DatasetExperience
  from avalanche.benchmarks.scenarios.task_aware import with_task_labels
  from avalanche.benchmarks.scenarios.supervised import with_classes_timeline
  from avalanche.benchmarks.utils import _make_taskaware_tensor_classification_dataset
label_desc: Use image node_id 4 for calling the ExperienceDecoratorTests obj's underlying member method code with example usage: obj.test_with_classes_timeline() without return types