class_docstr: Holds state record data (i.e., Maze states and actions, independent of the current
   action and observation space format) for a complete episode.
  
  :param id: ID of the episode. Can be used to link trajectory data from event logs and other sources.
  :param renderer: Where available, the renderer object should be associated to the episode record. This ensures
     correct configuration of the renderer (with respect to env configuration for this episode), and
     makes it easier to instantiate the correct renderer for displaying the trajectory data.
code: def __init__(self, id: Any, renderer: Optional[Renderer] = None):
      super().__init__(id)
      self.renderer = renderer
  
imports: from typing import List, Optional, Any, TypeVar, Generic, Dict, Union
  import numpy
  from maze.core.env.action_conversion import ActionType, TorchActionType
  from maze.core.rendering.renderer import Renderer
  from maze.core.trajectory_recording.records.state_record import StateRecord
  from maze.core.trajectory_recording.records.structured_spaces_record import StructuredSpacesRecord, StepKeyType
label_desc: Use image node_id 1 to create a new StateTrajectoryRecord object from inherited base classes: TrajectoryRecord with example: obj = StateTrajectoryRecord(id, renderer)