class_docstr: Implements HRL Hindsight Experience Replay as described in the following paper:  https://arxiv.org/abs/1805.08180
  
  This is the memory you should use if you want a shared hindsight experience replay buffer between multiple workers
code: def store_episode(self, episode: Episode, lock: bool = True) -> None:
      # for a layer producing sub-goals, we will replace in hindsight the action (sub-goal) given to the lower
      # level with the actual achieved goal. the achieved goal (and observation) seen is assumed to be the same
      # for all levels - we can use this level's achieved goal instead of the lower level's one
  
      # Calling super.store() so that in case a memory backend is used, the memory backend can store this episode.
      super().store_episode(episode)
  
      for transition in episode.transitions:
          new_achieved_goal = transition.next_state[
              self.goals_space.goal_name
          ]
          transition.action = new_achieved_goal
  
      super().store_episode(episode)
  
file_path: coach/rl_coach/memories/episodic/episodic_hrl_hindsight_experience_replay.py
imports: from typing import Tuple
  from rl_coach.core_types import Episode, Transition
  from rl_coach.memories.episodic.episodic_hindsight_experience_replay import HindsightGoalSelectionMethod, EpisodicHindsightExperienceReplay, EpisodicHindsightExperienceReplayParameters
  from rl_coach.memories.non_episodic.experience_replay import MemoryGranularity
  from rl_coach.spaces import GoalsSpace
label_desc: Use image node_id 2 for calling the EpisodicHRLHindsightExperienceReplay obj's underlying member method code with example usage: obj.store_episode(episode, lock) without return types