def _load_problems_from_file(self, filepath:str) -> list[Problem,...]:
     # assume that filepath exists
     if os.path.getsize(filepath) == 0:
         return []
     with open(filepath, 'r') as fid:
         data = json.loads(fid.read())
         return [Problem.from_json(p) for p in data.values()]
 def _lazy_init(self, filepath: str):
     if not os.path.exists(filepath) or os.path.getsize(filepath) == 0:
         self._data = dict()
         self._next_id = 1
         self._problems = tuple()
         self._sectors = dict()
     else:
         with open(filepath, 'r') as fid:
             self._data = json.loads(fid.read())
         self._next_id = int(self._data['next_id'])
         self._problems = tuple((Problem.from_json(p)
                                 for p in self._data['problems'].values()))
         self._sectors = self._data['sectors']