class_docstr: A regular replay buffer which stores transition without any additional structure
docstr: Store a new transition in the memory.
  :param transition: a transition to store
  :param lock: if true, will lock the readers writers lock. this can cause a deadlock if an inheriting class
               locks and then calls store with lock = True
  :return: None
docstr_tok: ["Store","a","new","transition","in","the","memory",".",":","param","transition",":","a","transition","to","store",":","param","lock",":","if","true",",","will","lock","the","readers","writers","lock",".","this","can","cause","a","deadlock","if","an","inheriting","class","locks","and","then","calls","store","with","lock","=","True",":","return",":","None"]
code: def store(self, transition: Transition, lock: bool = True) -> None:
      """
      Store a new transition in the memory.
      :param transition: a transition to store
      :param lock: if true, will lock the readers writers lock. this can cause a deadlock if an inheriting class
                   locks and then calls store with lock = True
      :return: None
      """
      self.assert_not_frozen()
  
      # Calling super.store() so that in case a memory backend is used, the memory backend can store this transition.
      super().store(transition)
      if lock:
          self.reader_writer_lock.lock_writing_and_reading()
  
      self.transitions.append(transition)
      self._enforce_max_length()
  
      if lock:
          self.reader_writer_lock.release_writing_and_reading()
  
imports: from typing import List, Tuple, Union
  import pickle
  import random
  import math
  import numpy
  from rl_coach.core_types import Transition
  from rl_coach.logger import screen
  from rl_coach.memories.memory import Memory, MemoryGranularity, MemoryParameters
  from rl_coach.utils import ReaderWriterLock, ProgressBar
label_desc: Use image node_id 7 for calling the ExperienceReplay obj's underlying member method code with example usage: obj.store(transition, lock) without return types