def METHOD_NAME(self, arf, specresp, current_params, current_stat,
                arf_dict):
    u = np.random.uniform(0, 1, 1)
    if u > self.p_M_arf:
        ncomp = self.simarf.ncomp
        old_rr = arf_dict['old_rr']
        if old_rr is None:
            old_rr = np.random.standard_normal(ncomp)
        # Assume the ARF is accepted by default
        # Update the ARFs with new deviates
        arf.specresp = self.simarf.add_deviations(specresp, old_rr,
                                                  self.rrsig)
        new_rr = self.simarf.rrout
        stat_temp = self.calc_fit_stat(self._mu)
        mu0 = np.repeat(0, ncomp)
        sig0 = np.diag(np.repeat(1, ncomp))
        accept_pr = dmvnorm(new_rr, mu0, sig0) - \
            dmvnorm(old_rr, mu0, sig0)
        accept_pr += stat_temp - current_stat
        accept_pr = np.exp(accept_pr)
        uu = np.random.uniform(0, 1, 1)
        if accept_pr > uu:
            arf_dict['old_rr'] = new_rr
            arf_dict['current'] = arf.specresp.copy()
            self.accept_arf()
            # When ARF is updated, set scale to None to signal a fit
            self._sigma = None
        else:
            # Restore to previous ARF
            arf.specresp = arf_dict['current']
            self.reject_arf()
    else:
        # Assume the ARF is accepted by default
        # Update the ARFs with new deviates
        arf.specresp = self.simarf.add_deviations(specresp)
        stat_temp = self.calc_fit_stat(self._mu)
        accept_pr = 0
        accept_pr += stat_temp - current_stat
        accept_pr = np.exp(accept_pr)
        uu = np.random.uniform(0, 1, 1)
        if accept_pr > uu:
            arf_dict['current'] = arf.specresp.copy()
            self.accept_arf()
            # When ARF is updated, set scale to None to signal a fit
            self._sigma = None
        else:
            # Restore to previous ARF
            arf.specresp = arf_dict['current']
            self.reject_arf()