def METHOD_NAME(self, params0, init=None):
    # (E)xpectation step
    self.update(params0)
    # Re-initialize state, if new initialization is given
    if init is not None:
        base_init = self.ssm.initialization
        self.ssm.initialization = init
    # Perform smoothing, only saving what is required
    res = self.ssm.smooth(
        SMOOTHER_STATE | SMOOTHER_STATE_COV | SMOOTHER_STATE_AUTOCOV,
        update_filter=False)
    res.llf_obs = np.array(
        self.ssm._kalman_filter.loglikelihood, copy=True)
    # Reset initialization
    if init is not None:
        self.ssm.initialization = base_init
    return res