docs: def copy(self):
          """
          Copies the BeliefState by recursively deep-copying all of
          its parts.  Domains are not copied, as they do not change
          during the interpretation or generation.
          """
          copied = BeliefState(self.__dict__['referential_domain']) 
          for key in ['environment_variables', 'deferred_effects', 'pos', 'p']:
              copied.__dict__[key] = copy.deepcopy(self.__dict__[key])
          return copied