code: def resample(self):
          if self.just_resampled:
              warnings.warn(
                  "Resampling without additional data; this may not perform as "
                  "desired.",
                  ResamplerWarning
              )
          self._just_resampled = True
          self._resample_count += 1
          if self._resampling_divergences is not None:
              old_locs = self.particle_locations.copy()
              old_weights = self.particle_weights.copy()
          if self._debug_resampling:
              old_mean = self.est_mean()
              old_cov = self.est_covariance_mtx()
          new_distribution = self.resampler(self.model, self)
          self.particle_weights = new_distribution.particle_weights
          self.particle_locations = new_distribution.particle_locations
          if self._canonicalize:
              self.particle_locations[:, :] = self.model.canonicalize(self.particle_locations)
          try:
              self.model.clear_cache()
          except Exception as e:
              warnings.warn("Exception raised when clearing model cache: {}. Ignoring.".format(e))
          if self._resampling_divergences is not None:
              self._resampling_divergences.append(
                  self._kl_divergence(old_locs, old_weights)
              )
          if self._debug_resampling:
              new_mean = self.est_mean()
              new_cov = self.est_covariance_mtx()
              logger.debug("Resampling changed mean by {}. Norm change in cov: {}.".format(
                  old_mean - new_mean,
                  np.linalg.norm(new_cov - old_cov)
              ))