/// <summary>
        /// Starts probing a new timepoint.
        /// </summary>
        /// <param name="simulation">The time-based simulation.</param>
        /// <param name="delta">The timestep to be probed.</param>
        public virtual void Probe(TimeSimulation simulation, double delta)
        {
            // Allow an additional truncation if necessary
            var args = new TruncateTimestepEventArgs(simulation, delta);

            OnTruncateProbe(args);

            // Advance the probing time
            Time = BaseTime + args.Delta;
            IntegrationStates[0].Delta = args.Delta;
        }
 /// <summary>
 /// Raises the <see cref="E:TruncateProbe" /> event.
 /// </summary>
 /// <param name="args">The <see cref="TruncateTimestepEventArgs"/> instance containing the event data.</param>
 protected virtual void OnTruncateProbe(TruncateTimestepEventArgs args) => TruncateProbe?.Invoke(this, args);