code: def _prev_end_checkpoints(self) -> List[Checkpoint]:
      if not self.current_steps:
          return self.start_checkpoints
      else:
          # makes sure we got each end name only once
          end_names = {
              e.name
              for s in self.current_steps
              for e in s.end_checkpoints
          }
          return [Checkpoint(name) for name in end_names]
  
file_path: rasa/rasa/shared/core/training_data/story_reader/story_step_builder.py
imports: import logging
  from typing import Text, Optional, Dict, Any, List
  import rasa.shared.core.training_data.structures
  import rasa.shared.utils.io
  from rasa.shared.constants import DOCS_URL_STORIES
  from rasa.shared.core.events import UserUttered, Event
  from rasa.shared.core.training_data.structures import Checkpoint, GENERATED_CHECKPOINT_PREFIX, GENERATED_HASH_LENGTH, STORY_START, StoryStep, RuleStep
label_desc: Use image node_id 3 for calling the StoryStepBuilder obj's underlying member method code with example usage: obj._prev_end_checkpoints() and returns: self, unknown