docs: def load_meta_data(self, path=None, recursively=True):
          """Load meta data of state machine model from the file system
  
          The meta data of the state machine model is loaded from the file system and stored in the meta property of the
          model. Existing meta data is removed. Also the meta data of root state and children is loaded.
  
          :param str path: Optional path to the meta data file. If not given, the path will be derived from the state
              machine's path on the filesystem
          """
          meta_data_path = path if path is not None else self.state_machine.file_system_path
  
          if meta_data_path:
              path_meta_data = os.path.join(meta_data_path, storage.FILE_NAME_META_DATA)
  
              try:
                  tmp_meta = storage.load_data_file(path_meta_data)
              except ValueError:
                  tmp_meta = {}
          else:
              tmp_meta = {}
  
          # JSON returns a dict, which must be converted to a Vividict
          tmp_meta = Vividict(tmp_meta)
  
          if recursively:
              root_state_path = None if not path else os.path.join(path, self.root_state.state.state_id)
              self.root_state.load_meta_data(root_state_path)
  
          if tmp_meta:
              # assign the meta data to the state
              self.meta = tmp_meta
              self.meta_signal.emit(MetaSignalMsg("load_meta_data", "all", True))