code: def save_state(self, fname: str):
          
          with open(fname, "wb") as fp:
              pickle.dump(self.batch_indices, fp)
              pickle.dump(self.curr_batch_index, fp)
              np.save(fp, [a.asnumpy() for a in self.inverse_data_permutations])
              np.save(fp, [a.asnumpy() for a in self.data_permutations])
docs: Saves the current state of iterator to a file, so that iteration can be
          continued. Note that the data is not saved, i.e. the iterator must be
          initialized with the same parameters as in the first call.
  
          :param fname: File name to save the information to.