class_docstr: TestExecutor is used for unit testing purposes.
code: def change_state(self, key, state, info=None):
      super().change_state(key, state, info=info)
      # The normal event buffer is cleared after reading, we want to keep
      # a list of all events for testing
      self.sorted_tasks.append((key, (state, info)))
  
file_path: airflow/tests/test_utils/mock_executor.py
imports: from __future__ import annotations
  from collections import defaultdict
  from unittest.mock import MagicMock
  from airflow.executors.base_executor import BaseExecutor
  from airflow.models.taskinstancekey import TaskInstanceKey
  from airflow.utils.session import create_session
  from airflow.utils.state import State
label_desc: Use image node_id 6 for calling the MockExecutor obj's underlying member method code with example usage: obj.change_state(key, state, info) without return types