def METHOD_NAME(self, state: _odesolver_state.ODESolverState, dt: FloatLike):
    """Perform one ODE-step from start to stop and set variables to the
    corresponding values.
    To specify start and stop directly, rk_step() and not _step_impl() is used.
    Parameters
    ----------
    state
        Current state of the ODE solver.
    dt
        Step-size.
    Returns
    -------
    _odesolver_state.ODESolverState
        New state.
    """
    y_new, f_new = rk.rk_step(
        self.solver.fun,
        state.t,
        state.rv.mean,
        self.solver.f,
        dt,
        self.solver.A,
        self.solver.B,
        self.solver.C,
        self.solver.K,
    )
    # Unnormalized error estimation is used as the error estimation is normalized in
    # solve().
    error_estimation = self.solver._estimate_error(self.solver.K, dt)
    y_new_as_rv = randvars.Constant(y_new)
    new_state = _odesolver_state.ODESolverState(
        ivp=state.ivp,
        rv=y_new_as_rv,
        t=state.t + dt,
        error_estimate=error_estimation,
        reference_state=state.rv.mean,
    )
    # Update the solver settings. This part is copied from scipy's _step_impl().
    self.solver.h_previous = dt
    self.solver.y_old = state.rv.mean
    self.solver.t_old = state.t
    self.solver.t = state.t + dt
    self.solver.y = y_new
    self.solver.h_abs = dt
    self.solver.f = f_new
    return new_state