/// <summary>
        /// Continues the simulation.
        /// </summary>
        /// <param name="simulation">The time-based simulation</param>
        /// <param name="delta">The initial probing timestep.</param>
        public virtual void Continue(TimeSimulation simulation, ref double delta)
        {
            // Allow registered methods to modify the timestep
            var args = new ModifyTimestepEventArgs(simulation, delta);

            OnContinue(args);

            // Shift the solutions and overwrite index 0 with the current solution
            IntegrationStates.Cycle();
            BaseTime = Time;

            // Update the new timestep
            IntegrationStates[0].Delta = args.Delta;
        }
 /// <summary>
 /// Raises the <see cref="E:Continue" /> event.
 /// </summary>
 /// <param name="args">The <see cref="ModifyTimestepEventArgs"/> instance containing the event data.</param>
 protected virtual void OnContinue(ModifyTimestepEventArgs args) => ContinueTimestep?.Invoke(this, args);